Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryeach-每X秒一次?_Javascript_Jquery_Json - Fatal编程技术网

Javascript jqueryeach-每X秒一次?

Javascript jqueryeach-每X秒一次?,javascript,jquery,json,Javascript,Jquery,Json,我有一系列的身份证,我将通过拉威尔的《雄辩》返回 e、 g 这些表示表中的ID,然后我使用这些ID调用路由 /get_single_item/{id} 我想要的是每X秒移动一次数组,每次调用single_item页面 目前: $.each(data, function(value) { console.log( value ); }); 一次输出所有值当然,我如何才能每X秒只获得一个值,然后在结束时从开始处重新开始一次?如果希望它永远打印,这是使用递归函数的一种方法:) (修订答案) 其

我有一系列的身份证,我将通过拉威尔的《雄辩》返回

e、 g

这些表示表中的ID,然后我使用这些ID调用路由

/get_single_item/{id}
我想要的是每X秒移动一次数组,每次调用single_item页面

目前:

$.each(data, function(value) {
  console.log( value );
});

一次输出所有值当然,我如何才能每X秒只获得一个值,然后在结束时从开始处重新开始一次?

如果希望它永远打印,这是使用递归函数的一种方法:)

(修订答案)

其实很简单:

  • 维护当前索引变量
  • 使用
    setInterval()
    递增和钳制变量,并使用相应的数组元素
var数组=[0,1,4,6,8,9],当前=-1;
setInterval(函数(){
电流+=1;
当前%=数组长度;
log(“回调项#“+current+”,其值为“+array[current]);
}, 2000);

队列运行器 我制作了一个小型库,用于在特定队列中运行一组函数

您可以将其用于您的特定案例,如下所示:

使用 图书馆:
使用递归函数和timeout@RajaprabhuAravindasamyfiddle做的正是我想回答的:)@RajaprabhuAravindasamy我在追求这个,一旦它到达数组的末尾,就继续循环。
$.each(data, function(value) {
  console.log( value );
});
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);
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);
    }
}