我正在使用以下代码初始化jQuery通知插件。我使用setTimeout函数来延迟每个对象init。
if(applicablePromotions.length > 0){
applicablePromotions.forEach(function(promo){
setTimeout(function(){
$.amaran({
content:{
title:'Your Download is Ready!',
message:'1.4 GB',
info:'my_birthday.mp4',
icon:'fa fa-download'
},
theme:'awesome ok',
position:'top left',
inEffect:'slideRight',
outEffect:'slideLeft'
});
},1000)
})
}
问题是在延迟时间段之后显示所有对象。每个对象没有时间差异。如何实现每个对象的时差。
答案 0 :(得分:1)
你的代码中的问题是数组中的所有元素都使用1000 ms
的常量延迟,因为你想逐个显示,你可以使用动态延迟,如
if (applicablePromotions.length > 0) {
applicablePromotions.forEach(function (promo, i) {
setTimeout(function () {
$.amaran({
content: {
title: 'Your Download is Ready!',
message: '1.4 GB',
info: 'my_birthday.mp4',
icon: 'fa fa-download'
},
theme: 'awesome ok',
position: 'top left',
inEffect: 'slideRight',
outEffect: 'slideLeft'
});
//use a dynamic delay
}, (i + 1) * 1000)
})
}