for (var i=list.length; i>=0; i--){
//do something....
}
我想使用setInterval使这个过程花费1整分钟,无论列表中有多少项。因此,如果有10个项目,它将每6秒,30个项目,每两秒钟等触发一次。
感谢您的帮助!
答案 0 :(得分:6)
可以这样做:
var list = [1,2,3,4,5,6,7,8,9,10];
var timeFrame = 60000;
var interval = timeFrame / (list.length-1);
var i = 0;
(function iterate () {
if (list.length > i) {
console.log(list[i]);
i++;
}
setTimeout(iterate, interval);
})();
我不确定这是否是您正在寻找的内容,但是这将在给定的时间范围内“迭代”遍历列表中的所有项目,而不使用for
循环。该函数将始终使用setTimeout
“自行调用”。超时根据项目数在开头计算。
此解决方案比setInterval
更“可信”。下一个超时将在上一个操作完成后设置,因此不会叠加。
答案 1 :(得分:1)
var totalItem = list.length;
setInterval(function(){ alert('');}, 60000/totalItem);
答案 2 :(得分:-1)
你要做
function code(i) {
return function() { alert(i); };
}
var period = 60 * 1000 / (list.length - 1);
for (var i=list.length; i>=1; i--){
setTimeout(code(list[i - 1]), period * (i - 1));
}
答案 3 :(得分:-2)
尝试以下内容:
var interval = 2;
for (var i=list.length; i>=0; i--){
setTimeout(your_code_here(), i*interval);
}