我需要在同一个集合上调用两个后端调用,并将结果合并到单个集合对象。我还需要触发同步'方法只有两个fetch方法都成功。
以下是代码段
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);
});
我需要在完成两次提取后才渲染视图。这怎么可能 ?
提前致谢。
答案 0 :(得分:1)
如果只有在其中一个失败后立即呈现视图,您应该可以使用$.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
,因为看起来你想要呈现视图请求是否成功。
答案 1 :(得分:0)
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.
}