我该如何使下面这个简单的while循环按顺序执行?
var x = 2;
var y = 10;
while (x<y) {
x = x+2;
setTimeout(function(){ y = y+1;
}, 500);
}
var x = 2;
var y = 10;
while (x<y) {
x = x+2;
setTimeout(function(){ y = y+1;
}, 500);
}
请使用setInterval()
代替。
setTimeout
在设置的时间内仅执行一次函数。setInterval
会定期重复执行函数。
要停止定时器,请使用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 >= 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
。
x = x + 2
和y = y + 1
吗?或者你想先将x
加到10
,然后再以相同的次数执行y = y + 1
和x = x + 2
? - fuyushimoya