这个有很多种实现方法,我整理如下:
方法1:
var i=0;
var arr = [1, 2, 3, 4, 5, 6];
function f(){
if(i<arr.length){
var record=arr[i];
console.log(record);
}
i++;
}
var t = setInterval(f,2000);
if(i>=arr.length){
clearInterval(t);
}
方法2:
var arr = [1, 2, 3, 4, 5, 6];
var j = 0; function fn(){ console.log(arr[j]); j++; }
for(var i = 0; i < arr.length; i++ ){
setTimeout(fn,i*2000) }
这里我们另外一个全局变量来存储值,每执行一次函数fn,j就加一次,所以执行到setTimeout的时候,就会调用fn函数,所以会达到我们预期的效果,但是这里这个j是一个全局变量,全局变量会造成容易改变其值或者命名冲突等问题.
改进:引入闭包函数.因为闭包函数,每一次创建都会存在一个自己的空间来存储唯一的值.所以利用这个思维.我们把代码写成下面的代码.
方法3:
var arr = [1, 2, 3, 4, 5, 6];
for(var i = 0; i < arr.length; i++ ){
(function (i) {
setTimeout(function () {
console.log(arr[i]);
}, i*2000);
})(i);
}
我们将i的每一次执行for循环的值,传给不同创建的闭包函数,这样每一个闭包函数里存储的i值,就都不会一样.所以就是达到我们的想要的结果.
方法4:
var arr = [1, 2, 3, 4, 5, 6];
function fn() {
if(arr.length>0){
console.log(arr.shift());
}
}
setInterval(fn, 2000);
可以使用数组的shift方法。