我要管理一个用Backbone.js制作的项目。该项目于2013年首次发布。目前我试图找出他们之前做过的事情。
我发现他们经常使用Promise.js libery与ReST-Server进行通信,如下面的示例
run: function () {
if (this.initialAppViewMethod) {
Promise.resolve(this.model.get('session').fetch())
.catch(this.showLoginView.bind(this))
.then(this.initMainView.bind(this));
}
},
我一直想知道为什么他们使用Promise.js而不是已经使用过的jquery.js liberay来做承诺是否有某种原因?
顺便说一句:如何将此脚本转换为使用纯jQuery功能?
答案 0 :(得分:1)
有人可能会使用Backbone的Promise.js可能很容易与另一个lib集成,但没有代码,这只是推测。
因为jQuery“promises”是not pure?
fetch
之类的骨干异步函数在后台使用jQuery's ajax
,它返回一个jqXHR对象。
$.ajax()
返回的jQuery XMLHttpRequest(jqXHR)对象 jQuery 1.5是浏览器的原生XMLHttpRequest的超集 对象[它]实现了 Promise接口,为它们提供所有属性,方法和 承诺的行为(有关详细信息,请参阅Deferred object)。
此外,您可以直接使用Backbone异步函数回调和选项:
run: function () {
if (this.initialAppViewMethod) {
this.model.get('session').fetch({
context: this,
error: this.showLoginView,
success: this.initMainView
});
}
},
这就够了。