如何在循环执行循环时简化以下操作?
var x = 2;
var y = 10;
while (x<y) {
x = x+2;
setTimeout(function(){ y = y+1;
}, 500);
}
答案 0 :(得分:6)
改为使用setInterval()
。
setTimeout
在超时时执行一次该功能。setInterval
重复执行函数和interval
要停止间隔,请使用clearInterval()
示例:
var x = 2,
y = 10;
var loop = setInterval(function(){
if(x<y) {
x = x+2;
y++;
} else {
clearInterval(loop);
}
}, 500);
答案 1 :(得分:0)
如果你期望在每次迭代中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();
&#13;
setTimeout和setInterval之间的差异是:
您需要在回调中调用setTimeout
以使其保持循环,直到它达到停止条件为止。虽然setInterval
只需拨打一次电话,但您可能必须使用clearInterval来停止拨打callback
。