0

以下に示すように

} そうしないと {
    liveInfo
    .fadeOut(2000)
    .html('Дر حال پخش : ' + current)
    .fadeIn(1500)
    .delay(7000);
    if (次!= ''){
        liveInfo
        .fadeOut(2000)
        .html('୨୧ : ' + 次)
        .fadeIn(1500)
        .delay(5000)
    }
}

コードの 2 つの部分が非同期で実行され、最初の部分の結果が表示されません。

その結果を見ることができないのはどれですか:

    liveInfo
    .fadeOut(2000)
    .html('Дر حال پخش : ' + current)
    .fadeIn(1500)
    .delay(7000);

if今、言及された部分と非同期にブロックを実行することを避けたいと思います。

私はこのようにすることができますが、それは私に同じコードをさらに持たせることを余儀なくさせます:

} そうしないと {
    if (次!= ''){
        liveInfo
        .fadeOut(2000)
        .html('Дر حال پخش : ' + current)
        .fadeIn(1500)
        .delay(7000)
        .fadeOut(2000)
        .html('୨୧ : ' + 次)
        .fadeIn(1500)
        .delay(5000)
    } そうしないと {
        // このコードは繰り返されます!
        liveInfo
        .fadeOut(2000)
        .html('Дر حال پخش : ' + current)
        .fadeIn(1500)
        .delay(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 に答える