0

プレイリストとして使用されるデータベースにトラックIDを保存しています。

トラックIDデータはjQuery$.get()を使用して取得され、JSON配列で返されます。

次に、jQuery $ .each()は、関連するトラックIDが渡されるSC.get('/ tracks /')をループします。

$.each(pl_array.track, function(i) {
    var pl_track_id = '/tracks/' + pl_array.track[i].id;
    SC.get(pl_track_id,function (tracks) {
        //looped code here
    });
});

問題は、SC.get()呼び出しが非同期であり、トラックがランダムに順序付けられることです。jQuery $ .get()には、非同期を無効にして同期的に実行するオプションがあります。SC.get()関数を使用してこのようなことを行う方法はありますか、それとも別のオプションがありますか?

4

1 に答える 1

1

そうしないでください。
SJAXはブラウザをフリーズさせ、非常に煩わしいものです。

本当に同期処理が必要な場合は、ループの代わりに再帰を使用してください。

var items = ...;
function processItem() {
    var item = items.unshift();
    SC.get(item.id. function() { 
        ...
        if (items.length)
            processItem();
    });
}

ただし、すべてのリクエストを一度に送信し(現在の方法で)、すべてのリクエストが届いた後で結果を並べ替える方がはるかに高速です。

于 2012-03-16T16:52:50.880 に答える