每个jQuery - 每X秒?

时间:2015-04-23 12:25:35

标签: javascript jquery json

我有一系列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秒获得一个值,然后在结束时从头开始一次?

3 个答案:

答案 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;
&#13;
&#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);
    }
}