だから私は$.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_id
BEFORE が呼び出されupdate_model
ていることであり、それを逆にする方法がわかりません。
実際の例では、1 から 100 までのモデルを保存しようとしています。次のステップに進む前に、これらのモデルから ID を取得する必要があります。
ここで基本的なものが欠けていますか?
編集
update_model
は呼び出されます - それは . の後に発生しprint_id
ます。また、done
メソッド onmodel_promise
を使用してから、次を使用してみましたthen
:
model_promise.done(update_model).then(print_id);
しかし、それupdate_model
は必要な引数を受け取りません。