![](/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.