我在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。 ; - )
答案 0 :(得分:6)
是的,这是可能的。只需将几个延迟传递给jQuery.when
:$.when(series.fetch(), cardsCollection.fetch()).then(...)
答案 1 :(得分:4)
$.when
不接受数组,您需要将.apply
与$.when
一起使用。
$.when.apply($,[series.fetch(), cardsCollection.fetch()]).done(dostuff);
但是,series.fetch()
和cardsCollection.fetch()
必须返回延迟对象。
如果您不使用.apply
,它会立即解决,因为您没有给它一个延迟对象。