Javascript 使用Promise.js或纯jQuery解决承诺的主干
我必须管理一个使用Backbone.js制作的项目。该项目于2013年首次发布。现在我试图弄清楚他们以前做了什么 我发现他们经常使用libery与ReST服务器通信,如下面的示例所示Javascript 使用Promise.js或纯jQuery解决承诺的主干,javascript,jquery,backbone.js,promise,Javascript,Jquery,Backbone.js,Promise,我必须管理一个使用Backbone.js制作的项目。该项目于2013年首次发布。现在我试图弄清楚他们以前做了什么 我发现他们经常使用libery与ReST服务器通信,如下面的示例所示 run: function () { if (this.initialAppViewMethod) { Promise.resolve(this.model.get('session').fetch()) .catch(this.showLoginView.bind(
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功能?有人可能会使用Promise.js和主干,原因可能是很容易与另一个库集成,但没有代码,这只是猜测 作为: 因为jQuery的“承诺”是什么 这是我的
主干异步函数类似于在后台使用,它返回一个jqXHR对象 截至的
$.ajax()
返回的jQuery XMLHttpRequest(jqXHR)对象
jQuery1.5是浏览器原生XMLHttpRequest的超集
反对
[它]实施
Promise接口,为它们提供所有属性、方法和
承诺的行为(有关更多信息,请参阅)
此外,您还可以直接使用主干异步函数回调和选项:
run: function () {
if (this.initialAppViewMethod) {
this.model.get('session').fetch({
context: this,
error: this.showLoginView,
success: this.initMainView
});
}
},
那就足够了 因为jQuery“承诺”是正确的?所以,如果我理解这一点,那么只要我使用jQuery<3.0,就可以使用Promise.js,因为jQuery处理承诺并不总是正确的?@FelixFaltin仅当您使用需要符合承诺的代码时。否则,就没有理由了。好吧,jQuery 3确实解决了一些问题,但是简单的承诺仍然更容易使用。@emilebergron否,
initMainView
在fetch(…).catch(…)
实现时被调用。请看我在上面的链接,也许谢谢你。目前,我在initMainView中得到一个错误,这是未知的。initMainView:function(){this.appView=new sand.ApplicationView({model:this.model});@FelixFaltin如果您有一个无法解决的新问题,请提出一个新问题。