4

私はjqueryでクールなことを見つけました:あなたは次のことができます:

$.when([$.get(..), $.ajax(...), $.getJSON(...)]).then(function(data1,data2,data3){
         // code to run when all requests are done
        });

これは、多くのajax呼び出しを同期する場合に最適です。

バックボーンでは、モデルまたはコレクションをフェッチするたびにajax呼び出しが発行されます。

cardsCollection.fetch();

私の質問は、バックボーンモデル/コレクションフェッチで同様の同期機能をどのように実現できるかです。

私は次のようなことをしたいと思います:

$.when([series.fetch(), cardsCollection.fetch()]).then(function(){
            cardsListView.seriesID = seriesID;
            cardsListView.seriesName = series.get('seriesName');
            cardsListView.template = _.template(CardsListTemplate);
            cardsListView.render();
            $('#loader').hide();
        });

出来ますか?

tnx。;-)

4

2 に答える 2

6

はい、可能です。いくつかのDeferredをに渡すだけjQuery.whenです:$.when(series.fetch(), cardsCollection.fetch()).then(...)

于 2012-06-05T14:16:12.913 に答える
4

$.when配列を受け入れない場合は、で使用する必要があり.applyます$.when

$.when.apply($,[series.fetch(), cardsCollection.fetch()]).done(dostuff);

ただし、は遅延オブジェクトを返す必要がありますseries.fetch()cardsCollection.fetch()

を使用しない場合.apply、遅延オブジェクトを指定しなかったため、すぐに解決されます。

于 2012-06-04T15:16:56.023 に答える