假设我有这段代码:
var a = ["a", "b", "c"];
a.forEach(function(entry) {
setTimeout(function() {
console.log(entry);
}, 1000);
});
等待1秒,然后立即记录a
,b
和c
。我想等待1秒,记录a
,再等一下,记录b
,等待第三秒,记录c
。
如何执行for循环以使每个循环花费一秒钟,并且以下循环在第二个循环启动之前不会启动?
答案 0 :(得分:2)
您可以使用setInterval()
和clearInterval()
完成任务。
尝试,
var xCnt = 0;
var a = ["a", "b", "c"];
var xInterval = setInterval(function () {
console.log(a[xCnt]);
xCnt += 1;
if (xCnt == a.length) {
clearInterval(xInterval);
}
}, 1000);
答案 1 :(得分:0)
试试这个:
var i = -1;
var int = setInterval(loop, 1000);
function loop(){
if( i >=0 && i < a.length){
console.log(a[i]);
i++;
}
else{ clearInterval(int);}
}
答案 2 :(得分:0)
尝试将setTimeout乘以forEach中的index参数,如下所示:
var a = ["a", "b", "c"];
a.forEach(function(entry, index) {
setTimeout(function() {
console.log(entry);
}, 1000 * (index + 1));
});