Ada*_*son 7 javascript jquery backbone.js
使用骨干模型,假设它从服务器获取一些额外的属性(如"FirstName"和"LastName"),我有类似以下内容:
var myModel = new Backbone.Model({ id: 10 });
var myOtherModel = new Backbone.Model({ id: 20 });
$.when(myModel.fetch(), myOtherModel.fetch()).done(function () {
console.log(myModel.toJSON());
});
Run Code Online (Sandbox Code Playgroud)
输出:
{id:10}
片刻后输出:
{id:10,名字:"Joe",姓氏:"Schmo"}
似乎Backbone的承诺存在缺陷,因为返回的jqXHR对象具有在骨干完成其自己的进程之前已经解决的承诺.
是这样的吗?还有其他必须做的事情来确保返回的承诺fetch()
在所有Backbone的set
完成之前都没有解决,或者至少set
在我的附加处理程序之前发生了吗?
发现了这个问题.
我获取的模型覆盖了Backbone.Model.sync.
sync: function (method, model, options) {
// Some stuff
Backbone.sync(method, model, options); // missing return
}
Run Code Online (Sandbox Code Playgroud)
因为它没有return Backbone.sync()
承诺立即解决.我会抓住这个,如果不是为了$.when()
包装fetch()
调用,它会默默地接受任何旧的东西,即使它不是一个承诺,只是立即将其视为已解决.
归档时间: |
|
查看次数: |
2143 次 |
最近记录: |