使用setTimeout以不同的延迟循环

时间:2018-11-08 20:55:05

标签: javascript jquery

我必须制作一种事件的播放列表,其中每个事件都有特定的播放时间,下一个必须在时间到后播放,依此类推。

当前,我正在使用setTimeout函数。现在,我需要循环获取我的事件和时间。

我的代码:

for(let i = 0; i < playlist.length ; i++){
     setTimeout(function(){
           $('#ventana').attr({src: playlist[i].url_play});
     }, playlist[i].time_play*i);                   
}

但是时机不对。我该如何纠正?

1 个答案:

答案 0 :(得分:0)

如果您将延迟设置为playlist[i].time_play*i的话,它的确不起作用:请考虑一下……它没有考虑到 past 播放列表的延迟,仅考虑了当前播放列表的延迟- -乘以其索引(??)。

相反,您需要累积不同的延迟,例如在delay变量中:

for (let i = 0, delay = 0; i < playlist.length ; delay += playlist[i].time_play, i++) {
    setTimeout(function() {
        $('#ventana').attr({src: playlist[i].url_play});
    }, delay);                   
}