Backbone JS Promises在模型上设置属性之前解析
Backbone JS Promises resolve before properties are set on model
使用主干模型,假设它从服务器获取一些附加属性(如"FirstName"answers"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());
});
输出:
{id:10}
片刻后的输出:
{id:10,名字:"Joe",姓氏:"Schmo"}
Backbone的promise似乎有缺陷,因为返回的jqXHR对象有一个在主干完成自己的过程之前解决的promise。
是这样吗?是否必须采取其他措施来确保fetch()
返回的承诺在Backbone的所有set
完成之前不会得到解决,或者至少在我的附加处理程序之前发生set
?
发现问题。
我正在获取的模型覆盖了Backbone.model.sync.
sync: function (method, model, options) {
// Some stuff
Backbone.sync(method, model, options); // missing return
}
因为它没有return Backbone.sync()
,所以承诺立即得到了解决。如果不是因为$.when()
包装了fetch()
调用,我会发现这一点,它会默默地接受任何旧的东西,即使它不是承诺,并立即将其视为已解决。
为什么不在fetch调用中使用"success"回调?
myModel.fetch({
success: function () {
console.log(myModel.toJSON());
}
});
相关文章:
- 将属性设置为未定义时未通知观察者
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 附加'沙箱'属性设置为动态创建的iframe以停止重定向
- 如何将按钮的数据属性设置为输入[type=text]中设置的任何值
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 当可见属性设置为 false 时,使用 JavaScript 删除空格
- 无法使用 Snap.SVG将“填充”属性设置为“继承”
- 使用jQuery为属性设置新值
- 是否可以通过属性's值,并将属性设置为parentNode
- 如何使用按钮的jsp点击事件将属性设置为struts-bean
- 在ember.js记录上使用toJSON,将其中一个属性设置为null
- javascript函数属性设置器中的延迟
- 添加“;选中'属性设置为jquery中的复选框
- jQuery/JavaScript按属性设置数组
- Dojo.将JSon中的属性设置为HTML属性
- 将class属性设置为元素不适用于javascript和jquery
- 将属性设置为对对象的引用
- 如何将显示属性设置为与内联!重要的
- jQuery-根据HTML属性设置CSS维度
- 为什么我不能在 JavaScript 中将对象属性设置为空字符串