繁体   English   中英

如何在while循环中使setTimeout在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(); 

setTimeoutsetInterval之间的差异是:

您需要在回调中调用setTimeout以使其循环,直到它满足停止条件。 虽然setInterval只需要调用一次,但您可能必须使用clearInterval来阻止它继续调用callback

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM