在每个对象初始化上添加时间

时间:2015-01-19 05:03:53

标签: javascript jquery html plugins

我正在使用以下代码初始化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)
    })
}

问题是在延迟时间段之后显示所有对象。每个对象没有时间差异。如何实现每个对象的时差。

我使用以下插件:http://hakanersu.github.io/AmaranJS/

1 个答案:

答案 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)
    })
}