だから私は$.ajaxいくつかの非同期コードを処理するために、jQuery の deferred (およびそれが promise を返すという事実) を使用しようとしています。
何が起こっているかを示す簡単な例を次に示します
var update_model = function(model, resp){
model.set('id', resp.id);
m = model;
};
var print_id = function(){
console.log(m.get('id'));
};
var MyModel = Backbone.Model.extend({});
var m = new MyModel({title: 'test'});
var model_promise = m.save({author: 'me'}, {success: update_model});
$.when(model_promise).then(print_id);
問題は、print_idBEFORE が呼び出されupdate_modelていることであり、それを逆にする方法がわかりません。
実際の例では、1 から 100 までのモデルを保存しようとしています。次のステップに進む前に、これらのモデルから ID を取得する必要があります。
ここで基本的なものが欠けていますか?
編集
update_modelは呼び出されます - それは . の後に発生しprint_idます。また、doneメソッド onmodel_promiseを使用してから、次を使用してみましたthen:
model_promise.done(update_model).then(print_id);
しかし、それupdate_modelは必要な引数を受け取りません。