使用Backbone.Collection和jQuery Deferred执行不同的调用(按顺序)

时间:2014-03-20 10:56:51

标签: javascript jquery backbone.js jquery-deferred

我正在使用如下代码。

var firstCollection = new FirstCollection();
$.when( firstCollection.fetch( params1 )).done(function() {

    // here firstCollection has been enriched. It contains the actual data.
    // params2 will depends on firstCollection attirbutes

    var secondCollection = new SecondCollection();
    $.when( secondCollection.fetch( params2 ) ).done(function() {

        // here secondCollection has been enriched. It contains the actual data.
        // move to another screen

    }).fail( function() {

    } );

}).fail(function() {

}).always(function() {

});

我的目标是按顺序执行两个调用,即执行firstCollection的提取,然后执行secondCollection的提取。动机是第二次获取取决于firstCollection属性。

所以我的问题如下。有没有更好的替代方法来实现这个jQuery Deferred或我正在使用的解决方案是正确的?

1 个答案:

答案 0 :(得分:0)

也许就是这样:

var firstCollection = new FirstCollection();
var secondCollection = new SecondCollection();

this.listenTo(firstCollection, 'reset', scndfetch);

firstColllection.fetch(params1).then(function(data){  })

scndfetch = function(){
secondCollection.fetch(params2).then(function(data){
    //data has model/collection
});
}

当加载集合时,会发生同步/重置事件。听一听,secondCollection可以开始加载..