![](/img/trans.png)
[英]How to execute Console.log and setTimeout sequentially in JavaScript
[英]How to make setTimeout in while loop execute sequentially in JavaScript?
如何在循环执行时顺序执行以下简单操作?
var x = 2;
var y = 10;
while (x<y) {
x = x+2;
setTimeout(function(){ y = y+1;
}, 500);
}
请改用setInterval()
。
setTimeout
在超时时执行一次该函数。setInterval
在on和interval上重复执行该函数
要停止间隔,请使用clearInterval()
例:
var x = 2,
y = 10;
var loop = setInterval(function(){
if(x<y) {
x = x+2;
y++;
} else {
clearInterval(loop);
}
}, 500);
如果你期望的是做x = x + 2; y = y + 1;
x = x + 2; y = y + 1;
在每次迭代中直到x >= y
然后你可以这样做:
var x = 2; var y = 10; var func = function() { // While x is still smaller than y if (x < y) { x = x + 2; y = y + 1; console.log(x, y); // Register a timer to call self after 500ms if we still to loop. setTimeout(func, 500); } }; // Manually start the function. func();
setTimeout和setInterval之间的差异是:
您需要在回调中调用setTimeout
以使其循环,直到它满足停止条件。 虽然setInterval
只需要调用一次,但您可能必须使用clearInterval来阻止它继续调用callback
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.