私は、2番目のリクエストが最初のリクエストの結果に依存するバックボーンリクエストをデイジーチェーンしたいと考えています。どのように私はそれを正しい方法で行うのですか? jQuery $.done()
は私にとって正しい方法ではないようです。より良い説明のために、ここに仮定的な例があります:Backbone.jsのデイジーチェーンに依存するAJAXリクエスト
私はサプライヤーのリストを持っており、それぞれのサプライヤーは会社に供給する部品のリストを持っています。私はすべてのサプライヤを取得し、このサプライヤのリストのすべての部品を取得したいと思います。ここでは、私が運がなければ使用しようとしているサンプルコードです。何が起こる
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
前のモデルはをインスタンス化された直後に第2の要求火災です。結果は次のとおりです。サプライヤーリストは空のままであり、2番目の要求はサプライヤーの空のリストで起動します。
'suppliers'コレクションの' reset'イベントを聞いてみましたか? ['fetch'](http://documentcloud.github.com/backbone/#Collection-fetch)は、コレクションを取得して再設定した後で呼び出すべきです。 –
これは試してみるとよい考えです。前の2つのリクエストが完了するのを待つ前に、3番目のリクエストを実行する必要があるときに、これは機能しますか? –
リスニングを行っている人によって異なります。ネストされた 'success'コールバックがうまくいくかもしれません。 –