时间:2021-07-01 10:21:17 帮助过:89人阅读
如题,用到闭包,和setTimeout函数怎么解决?
也欢迎php的实现
var count = (function() {
var timer;
var i = 0;
function change(tar) {
i++;
console.log(i);
if (i === tar) {
clearTimeout(timer);
return false;
}
timer = setTimeout(function() {
change(tar)
}, 1000)
}
return change;
})()
count(50)
(function(){
var i=0;
var end=setInterval(function(){
if(i>=50){
clearInterval(end);
}
console.log(i);
i++;
},1000);
})()
用setTimeout
的话,就不需要clear了。
void function loop(i) {
if (i <= 50) {
console.log(i);
setTimeout(loop.bind(this, ++i), 1000);
}
}(1);
好像没用到闭包,那么这样吧:
void function loop(i) {
if (i <= 50) {
console.log(i);
setTimeout(function() {loop(++i);}, 1000);
}
}(1);
OK,这样就有闭包了。
function Count(){
var counter=0;
function addCount(){
counter++;
console.log(counter);
if(counter==50){
return false;
}
setTimeout(addCount,1000);
}
return addCount;
}
var myCount=new Count();
myCount();
var task = function (){
var val = 0;
var target = 50;
(function add(){
val++;
if(val === target)
return;
setTimeout(add, 1000);
})();
}
你这个停不下来吧