$.ajax
所以我正在尝试使用 jQuery 的延迟(以及返回承诺的事实)来处理一些异步代码。
这是一个快速示例,它显示了正在发生的事情
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
被称为之前update_model
,我不知道如何让它发生相反的方式。
在实际示例中,我尝试保存从 1 到 100 个模型的任意位置,并且我需要从这些模型中获取 ID,然后才能进行下一步。
我在这里缺少一些基本的东西吗?
编辑
update_model
确实被调用了——它只是发生在print_id
. 另外,我尝试过使用该done
方法model_promise
,然后使用then
:
model_promise.done(update_model).then(print_id);
但随后update_model
没有收到必要的论据。