扫码关注官方订阅号
比如for(var i = 0; i < 5 ; i ++){} 我想当i=0时,然后定时器setTimeout(function(){console.log("a");},1000)1秒后输出一个a,i=1时再输出个a,以此类推,直到循环结束。应该怎么写呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
setInterval(function(){},1000)是每一秒执行一次函数。请把你的问题描述的更清晰
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');
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
setInterval(function(){},1000)是每一秒执行一次函数。
请把你的问题描述的更清晰
setinterval 本身就是每1s执行一次程序,不需要循环。只执行一次的是settimeout。
如果你是想延时1s执行函数a,再延时1s执行函数b的话,只能嵌套settimeout
我在刚学这个的时候,会写一种错误的写法,如下:
这样函数a并不会延时1s执行,因为js是异步的,上面的延时不会阻塞下面函数的执行。我会发生这种写法是因为之前单片机程序写多了,自然而然就这么理解了。。
---------分割线---------
题目更改后,直接用setInterval就可以了,停止用clearInterval
可以参考一下这个函数:
for(var i = 0; i < 5; i++) {
(function(i) {
setTimeout(function() {
console.log(i);
}, 1000);
})(i)
}
这样就好了
用了个笨办法 。
题主描述的问题不是太清晰
如果每个1秒,输出a,可以使用setInterval
大概其是这个意思吧: