比如for(var i = 0; i < 5 ; i ++){} 我想当i=0时,然后定时器setTimeout(function(){console.log("a");},1000)1秒后输出一个a,i=1时再输出个a,以此类推,直到循环结束。应该怎么写呢?
比如for(var i = 0; i < 5 ; i ++){} 我想当i=0时,然后定时器setTimeout(function(){console.log("a");},1000)1秒后输出一个a,i=1时再输出个a,以此类推,直到循环结束。应该怎么写呢?
setinterval 本身就是每1s执行一次程序,不需要循环。只执行一次的是settimeout。
如果你是想延时1s执行函数a,再延时1s执行函数b的话,只能嵌套settimeout
setTimeout(function(){
//函数a
setTimeout(function(){
//函数b
}, 1000);
}, 1000);
我在刚学这个的时候,会写一种错误的写法,如下:
setTimeout(function(){}, 1000);
(function (){
//函数a
})()
这样函数a并不会延时1s执行,因为js是异步的,上面的延时不会阻塞下面函数的执行。我会发生这种写法是因为之前单片机程序写多了,自然而然就这么理解了。。
---------分割线---------
题目更改后,直接用setInterval就可以了,停止用clearInterval
可以参考一下这个函数:
for(var i = 0; i < 5; i++) {
(function(i) {
setTimeout(function() {
console.log(i);
}, 1000);
})(i)
}
var i = 0;
var int = setInterval(function() {
if(i < 5) {
i ++;
console.log("log: " + i);
}
else {
clearInterval(int);
}
}, 1000);
这样就好了
for(var i = 0, j = 1; i < 5 ; i ++){
setTimeout(function(){
console.log("a");
}, 1000 * j++);
}
用了个笨办法 。
var n = 1;
for(var i = 0; i < 5; i++) {
(function(i) {
setTimeout(function() {
console.log('第' + i + '个a');
}, 1000 * n);
})(i)
n++;
}
题主描述的问题不是太清晰
如果每个1秒,输出a,可以使用setInterval
var i = 0,
fun = setInterval(function() {
if (i < 5) {
console.log('a');
i++;
} else {
clearInterval(fun);
}
},1000);
for (let i = 0; i < 100; i++) {
setTimeout(function() {
console.log(i);
}, i * 1000);
}
<script>
for(var i =0;i<5;i++){
(function(i){
setTimeout(function(){
console.log("a")
},1000 * (i+1))
})(i)
}
</script>
大概其是这个意思吧:
function bingo(str) {
var i=0,j=0;
return j=setInterval(function(){
if (i<5) {
console.log(str);
i++;
} else {
clearInterval(j);
}
}, 1000);
}
bingo('a');
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
setInterval(function(){},1000)是每一秒执行一次函数。
请把你的问题描述的更清晰