2012-06-04 30 views
4

我發現jQuery的一件很酷的事情: 你可以這樣做:我如何可以同步2個骨幹獲取與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。 ;-)

回答

6

是的,這是可能的。只需通過幾個推遲到jQuery.when$.when(series.fetch(), cardsCollection.fetch()).then(...)

+0

偉大的工程! TNX! – Guy

+0

不清楚解決方案是什麼,請提供一個代碼示例。 – drogon

+0

@drogon,對不起,我不確定你想看到什麼代碼。你試圖通過使用jQuery.Deferred獲得什麼? – theotheo

4

$.when不接受數組,您需要使用.apply$.when

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

然而,series.fetch()cardsCollection.fetch()將不得不推遲返回的對象。

如果你不使用.apply,它會立即解決,因爲你沒有給它一個延期對象。