【发布时间】:2012-08-09 20:20:48
【问题描述】:
所以我尝试使用 jQuery 的 deferred(以及 $.ajax 返回承诺的事实)来处理一些异步代码。
这是一个简单的例子,它显示了正在发生的事情
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 之后发生。另外,我尝试在model_promise 上使用done 方法,然后使用then:
model_promise.done(update_model).then(print_id);
但是update_model 没有收到它的必要参数。
【问题讨论】:
-
什么是反对票?
标签: jquery backbone.js jquery-deferred