如何进行两个 backbone 提取调用并将其合并

How to make two backbone fetch calls and combine it

我需要对同一个集合调用两个后端调用并将结果合并到单个集合对象。此外,我只需要在两种获取方法都成功后才触发 'sync' 方法。

这是代码片段

myCollection.fetch({ headers: {myheader: 'test1'}, data: {status: 'test1'}, reset: true});
myCollection.fetch({ headers: {myheader: 'test2'}, data: {status: 'test2'}, reset: true, add: true});

myCollection.once('sync error', function () {
    $('#js-my-grid').html(view.render().el);

}); 

我只需要在两个提取都完成后才渲染视图。这怎么可能 ?

提前致谢。

var count = 0;

myCollection.fetch({..., success: _internal});
myCollection.fetch({..., success: _internal});

function _internal() {
    count ++;
    if (count < 2) return;
    //2 calls are finished. do whatever you want here.
}

您应该可以使用 $.when 如果其中一个失败时它可以立即呈现视图:

$.when(myCollection.fetch({ headers: {myheader: 'test1'}, data: {status: 'test1'}, reset: true}),
       myCollection.fetch({ headers: {myheader: 'test2'}, data: {status: 'test2'}, reset: true, add: true}))
 .always(function() {
     $('#js-my-grid').html(view.render().el);
 });

如果你使用 .done 你可以分配一个回调,当两个请求都成功时执行,如果你使用 .fail 你可以定义一个回调,如果其中一个请求失败则执行.我使用了 .always,因为无论请求是否成功,您似乎都想呈现视图。