Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 等待使用$.when.apply保存多个主干模型_Jquery_Backbone.js_Backbone Model - Fatal编程技术网

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)
有什么不同吗?没有,相同的结果是否可以在一个示例中重现?我使用了一些示例演示并成功地开发了它:-正如您将看到的,-
全局失败
控制台日志不会等待所有请求失败。希望它能有所帮助。