for (var i=list.length; i>=0; i--){
//do something....
}
我想使用setInterval函数,使得这个过程总共需要一分钟的时间,不管列表中有多少项。如果有10个项目,它将每6秒触发一次,30个项目每2秒触发一次,以此类推。
感谢您的帮助!
for (var i=list.length; i>=0; i--){
//do something....
}
我想使用setInterval函数,使得这个过程总共需要一分钟的时间,不管列表中有多少项。如果有10个项目,它将每6秒触发一次,30个项目每2秒触发一次,以此类推。
感谢您的帮助!
可以做类似这样的事情:
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
相比,此解决方案更加“可靠”。下一个超时将在前一个操作完成后设置,因此不会堆叠。
var totalItem = list.length;
setInterval(function(){ alert('');}, 60000/totalItem);
你会做
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));
}
setInterval
的第一个参数应该是函数,第二个参数是延迟时间。 - Lekensteynvar interval = 2;
for (var i=list.length; i>=0; i--){
setTimeout(your_code_here(), i*interval);
}