Jquery 如何将$.when.apply与主干.集合或模型一起使用

Jquery 如何将$.when.apply与主干.集合或模型一起使用,jquery,backbone.js,.when,Jquery,Backbone.js,.when,下面的代码是一个小函数,用于保证所有主干收集/模型提取操作。我现在面临的唯一问题是延迟。解决你能看到模型的地方实际上是一个数组 这样做的目的是为了满足简单的for循环操作,每个循环都有自己的fetch操作 调用获取数据示例: 我希望fetchData将按ipid的顺序返回集合/模型。但控制台的结果总是显示res_ipid无序,因为它取决于获取的竞争条件 希望有人能对此有更多的了解。我认为你让这件事变得更加困难了。而不是: var complete = _.after(param.length,

下面的代码是一个小函数,用于保证所有主干收集/模型提取操作。我现在面临的唯一问题是延迟。解决你能看到模型的地方实际上是一个数组

这样做的目的是为了满足简单的for循环操作,每个循环都有自己的fetch操作

调用获取数据示例:

我希望fetchData将按ipid的顺序返回集合/模型。但控制台的结果总是显示res_ipid无序,因为它取决于获取的竞争条件


希望有人能对此有更多的了解。

我认为你让这件事变得更加困难了。而不是:

var complete = _.after(param.length, function() {
    _this.fetchData(ajax_calls).done(performanotherfunction);
});
_.each(param, function(value, key) {
    var data = new Collection();
    data.id = value.ipid;
    ajax_calls.push(data.fetch({
        success: function(model) {
            console.log(model.get('res_ipid'));
        }
    }));
    complete()
}, this);
您应该能够做到:

var promises = _.map(param, function(value, key) {
    var data = new Collection();
    data.id = value.ipid;
    return data.fetch({
        success: function(model) {
            console.log(model.get('res_ipid'));
        }
    });
});
$.when.apply($, promises).done(performanotherfunction);

模型是延期还是承诺?为了使用$,它必须是。如果是,那么您不需要自己设置延迟,因为您可以使用模型中的延迟并返回它。如果它不是延迟的,那么你必须将一些完成操作连接到延迟的。嗨,我有一个更新问题。
var complete = _.after(param.length, function() {
    _this.fetchData(ajax_calls).done(performanotherfunction);
});
_.each(param, function(value, key) {
    var data = new Collection();
    data.id = value.ipid;
    ajax_calls.push(data.fetch({
        success: function(model) {
            console.log(model.get('res_ipid'));
        }
    }));
    complete()
}, this);
var promises = _.map(param, function(value, key) {
    var data = new Collection();
    data.id = value.ipid;
    return data.fetch({
        success: function(model) {
            console.log(model.get('res_ipid'));
        }
    });
});
$.when.apply($, promises).done(performanotherfunction);