Backbone.js:在Fetch调用中命中Parse之前返回Promise

时间:2013-09-30 12:39:43

标签: backbone.js promise

知道如何确保Collection在通过Fetch调用返回Promise之前通过Parse函数运行了响应吗? 即。

var colsComplete = _.invoke(cols, 'fetch'); // cols is an array of collections
$.when(colsComplete).then(callback); // this runs before the Parse function has been hit!

2 个答案:

答案 0 :(得分:1)

_.invoke(cols, 'fetch')返回一个promises数组,然后将其传递给$.when,这会对单个参数作出反应

  

如果单个参数传递给jQuery.when并且它不是延迟或承诺,则它将被视为已解决的延迟,并且任何doneCallbacks附加将立即执行。

您可能想要做的是apply your array as a list of arguments

$.when.apply(null, colsComplete).then(callback);

答案 1 :(得分:0)

你可以尝试

_.each(cols, function(collection){
    collection.fetch({
        success: callback
    });
});

它要长一点但它应该有效。