我正在寻找菊花链主干请求,其中第二个请求依赖于第一个请求的结果。我该如何以正确的方式做到这一点? jQuery $.done()
似乎不适合我。为了更好地解释,这里有一个假设的例子:
我有一个供应商列表,每个供应商都有一个他们向公司提供的零件列表。我想获取所有供应商,然后获取此供应商列表的所有零件。这是我尝试使用但没有运气的示例代码。
var App = {};
App.Supplier = Backbone.Model.extend({ });
App.Part = Backbone.Model.extend({ });
App.Suppliers = Backbone.Collection.extend({
model: App.Supplier
});
App.Parts = Backbone.Collection.extend({
model: App.Part
})
var suppliers = new App.Suppliers;
var parts = new App.Parts;
var supplier_request = suppliers.fetch();
supplier_request.done(function(){
parts.fetch_by_suppliers([supplier1, supplier2, ...]);
});
所发生的情况是,在收到第一个回复后、在实例化 App.Supplier
模型之前立即触发第二个请求。结果是——供应商列表保持为空,第二个请求以空的供应商列表触发。
最佳答案
为了完成这种菊花链,您需要将成功回调传递给 fetch
方法。 success
回调作为参数传递给 (collection, response)
。您可以按以下方式重写示例中的代码:
...
suppliers.fetch({success:
function(collection, response){
parts.fetch_by_suppliers(collection);
}
});
Backbone.js 文档对此进行了很好的解释。 http://documentcloud.github.com/backbone/#Collection-fetch
希望这对你有帮助!
关于jquery - Backbone.js 中菊花链依赖的 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082712/