Jquery 等待使用$.when.apply保存多个主干模型
我试图保存几个主干模型(不是在一个集合中),并在它们全部保存后执行代码 这是我的简化代码:Jquery 等待使用$.when.apply保存多个主干模型,jquery,backbone.js,backbone-model,Jquery,Backbone.js,Backbone Model,我试图保存几个主干模型(不是在一个集合中),并在它们全部保存后执行代码 这是我的简化代码: var requestsArray = modelsArray.map(function(model) { return model.save(); }); $.when.apply(undefined, requestsArray) .done(function() { console.log('DONE CALLBACK'); console.log(
var requestsArray = modelsArray.map(function(model) {
return model.save();
});
$.when.apply(undefined, requestsArray)
.done(function() {
console.log('DONE CALLBACK');
console.log('ARGS', arguments);
})
.fail(function() {
console.log('FAILED');
console.log('ARGS', arguments);
});
但是当我运行这个时,done
回调会立即被触发,它不会等待ajax请求完成
为什么会这样?这不会直接发生在请求中:( 我必须这样做:
var deferredsArray = modelsArray.map(function(model) {
var dfd = new $.Deferred();
model.save().then(function() {
dfd.resolve();
}, function() {
dfd.reject();
});
return dfd;
});
$.when.apply(undefined, deferredsArray)
.done(function() {
console.log('ALL SUCCESSFUL');
})
.fail(function() {
console.log('AT LEAST ONE FAILED');
});
当所有操作都成功时,则调用
$的done
方法。执行$。when.apply($,requestsArray)
有什么不同吗?没有,相同的结果是否可以在一个示例中重现?我使用了一些示例演示并成功地开发了它:-正如您将看到的,-全局失败
控制台日志不会等待所有请求失败。希望它能有所帮助。