我正在尝试找到一种方法,该方法如何遍历数组,使用该array [index]暂停功能执行x秒钟,然后移至该数组中的下一个索引。
这是我到目前为止所取得的成就。它可以打印出整个数组,但是我需要它仅打印出一个值,对其进行处理,然后进行下一个操作,依此类推。
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'];
var index = 0;
for (index = 0; index < destinations.length; index++){
console.log(destinations[index]);
};
答案 0 :(得分:2)
您可以将iteration protocols与Symbol.iterator
中的Array#[@@iterator]()
实现一起进行迭代,直到没有更多元素可用为止。
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'],
gen = destinations[Symbol.iterator]();
interval = setInterval(function () {
var g = gen.next();
if (g.done) {
clearInterval(interval);
return;
}
console.log(g.value);
}, 1000);
答案 1 :(得分:0)
您可以使用setTimeout
来完成此操作。
var time_between_steps = 1000
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain']
var index = 0
function nextItem(){
// do things here with destinations[index]
console.log(destinations[index])
index++
// if we have not yet reached the end of the array, run nextItem again after time_between_steps
if(index<=destinations.length-1)
setTimeout(nextItem,time_between_steps)
}
nextItem()
答案 2 :(得分:0)
setTimeout
可在此处使用:
基本上,您可以定义方法processItem
并使用当前参数进行调用。延迟也可以通过变量设置。
延迟后,将使用参数调用该方法。
var delay = 1000; // 1 sec
var destinations = ['Greece', 'Maldives', 'Croatia', 'Spain'];
var index = 0;
function processItem(item){
console.log("Item " + item);
// do stuff
}
function iterate(index){
processItem(destinations[index]);
index++;
if (index < destinations.length){
setTimeout(iterate, delay, index);
}
}
iterate(index);