0

正如你在下面看到的

} 别的 {
    直播信息
    .fadeOut(2000)
    .html('در حال پخش : ' + 当前)
    .fadeIn(1500)
    .延迟(7000);
    如果(下一个!=''){
        直播信息
        .fadeOut(2000)
        .html('بعدی : ' + 下一个)
        .fadeIn(1500)
        .延迟(5000)
    }
}

我的代码的两部分异步运行,我看不到第一部分的结果。

我看不到它的结果:

    直播信息
    .fadeOut(2000)
    .html('در حال پخش : ' + 当前)
    .fadeIn(1500)
    .延迟(7000);

现在我想避免if与提到的部分异步运行块。

我可以这样做,但它迫使我有更多相同的代码:

} 别的 {
    如果(下一个!=''){
        直播信息
        .fadeOut(2000)
        .html('در حال پخش : ' + 当前)
        .fadeIn(1500)
        .延迟(7000)
        .fadeOut(2000)
        .html('بعدی : ' + 下一个)
        .fadeIn(1500)
        .延迟(5000)
    } 别的 {
        // 这段代码重复了!
        直播信息
        .fadeOut(2000)
        .html('در حال پخش : ' + 当前)
        .fadeIn(1500)
        .延迟(7000)
    }
}

最好的方法是什么?

4

2 回答 2

1

要进行同步任务——比如if条件或.html()——内联等待,许多动画函数都提供了可以使用的回调。而且,对于那些不喜欢(喜欢.delay())的人,您可以通过将任务包装在 中来将它们添加到同一个fx队列中.queue()

liveInfo
.fadeOut(2000, function () {
    liveInfo.html('در حال پخش : ' + current);
})
.fadeIn(1500)
.delay(7000)
.queue(function (done) {
    if (next != ''){
        liveInfo
        .fadeOut(2000, function () {
            liveInfo.html('بعدی : ' + next);
        })
        .fadeIn(1500)
        .delay(5000)
    } 
    done();
});
于 2013-03-17T21:00:36.470 回答
0
} else {
    liveInfo
    .fadeOut(2000)
    .html('در حال پخش : ' + current)
    .fadeIn(1500);
    if (next != ''){
        liveInfo
        .delay(7000) /* move the delay to the next animation */
        .fadeOut(2000)
        .html('بعدی : ' + next)
        .fadeIn(1500)
        .delay(5000)
    }
}

我认为只需将延迟移至下一个动画就可以满足您的需求。

于 2013-03-17T20:50:13.047 回答