如何在JavaScript循环中添加延迟?我想在while循环中添加延迟/睡眠:我试过这样的:alert('hi');for(var start = 1; start < 10; start++) {
setTimeout(function () {
alert('hello');
}, 3000);}只有第一种情况是真的:显示后alert('hi'),它将等待3秒然后alert('hello')将显示,但随后alert('hello')将反复不断。我想要的是,在alert('hello')3秒后显示alert('hi')之后,它需要等待第二次3秒alert('hello'),依此类推。
4 回答
开满天机
TA贡献1786条经验 获得超12个赞
尝试这样的事情:
var i = 0, howManyTimes = 10;function f() { alert( "hi" ); i++; if( i < howManyTimes ){ setTimeout( f, 3000 ); }}f();
慕哥6287543
TA贡献1831条经验 获得超10个赞
如果使用ES6,您可以使用let
以实现此目的:
for (let i=1; i<10; i++) { setTimeout( function timer(){ alert("hello world"); }, i*3000 );}
为每次迭代let
声明i
了什么,而不是循环。这样,传递的内容正是我们想要的。setTimeout
翻阅古今
TA贡献1780条经验 获得超5个赞
由于ES7是等待循环的更好方法:
function timer(ms) { return new Promise(res => setTimeout(res, ms));}async function load () { for (var i = 0; i < 3; i++) { console.log(i); await timer(3000); }}load();
请注意,今天很少支持ES7,因此您需要与Babel进行交互,以便在任何地方使用它。
添加回答
举报
0/150
提交
取消