我有一系列ID,我通过Laravel滔滔不绝地回来。
e.g。
[0, 1, 4, 6, 8, 9]
这些代表表中的ID,然后我使用这些ID调用路由。
/get_single_item/{id}
我想要的是每隔X秒,在数组中移动并每次调用single_item页面。
目前:
$.each(data, function(value) {
console.log( value );
});
当然,一次性排出所有值,我怎样才能每隔X秒获得一个值,然后在结束时从头开始一次?
答案 0 :(得分:3)
(修订回答)
实际上相当简单:
setInterval()
递增并钳制变量并使用相应的数组元素
var array = [0, 1, 4, 6, 8, 9], current = -1;
setInterval(function() {
current += 1;
current %= array.length;
console.log("callback for item #" + current + " whose value is " + array[current]);
}, 2000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- nothing here, look at browser console -->
&#13;
答案 1 :(得分:0)
如果您希望永久打印,这是使用递归函数执行此操作的一种方法:)
function print_every_x_second(list, milliseconds) {
// Get the first value and remove it from array
var value = list.shift();
console.log(value);
// Put it back at the end.
list.push(value);
setTimeout('print_every_x_second(list, milliseconds)', milliseconds);
}
var list = [0, 1, 4, 6, 8, 9];
var milliseconds = 300;
print_every_x_second(list, milliseconds);
答案 2 :(得分:0)
我创建了一个小型库来运行特定队列中的一组函数,
您可以在此处根据具体情况使用它,如下所示:
var arr = [1,2,3,4], i = 0;
var fn = function() {
// your business logic is separated from the iteration logic
if(i === arr.length) return;
console.log( arr[i++]);
};
// execute the queue every 1 second
queue([fn], 1000, /* repeat */ true)();
var queue = function(fn,timeout,repeat){
return function(){
var i = 0, f = fn[i], t = setInterval(function(){
f();
if(fn[i+1] !== undefined){
f = fn[++i];
}else{
if(repeat){
i=0;
f = fn[i];
}else{
clearInterval(t);
}
}
}, timeout);
}
}