Jon*_*Jon 7 ember.js rsvp-promise
我正在使用Ember的PromiseProxyMixin和AJAX数据调用以及Ember RSVP Promises.我不想在每个路由/模板中加入错误处理,而是将拒绝的承诺冒充到Application路由中的错误处理程序,如下所示:
export default Ember.Route.extend({
actions: {
error: function(error, transition) {
return this.transitionTo('error');
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
目前,如果承诺被拒绝,被拒绝的承诺似乎没有出现在Application路由中(这是因为PromiseProxyMixin附加到promise的.fail()函数并阻止进一步冒泡?如果是这样,有没有办法继续冒泡?)
是否可以使用PromiseProxyMixin并允许被拒绝的承诺冒泡到Application路由?
我不确定它是否能解决您的问题,但我们确实遇到了 Es6 Promise 和 jQuery Promise 的差异,因此我们默认使用以下初始化程序将所有 jQuery Promise 转换为 Es6。我们还使用以下方法转换其他“thennables” when:
import Ember from 'ember';
function initialize() {
var $ajax = Ember.$.ajax;
Ember.RSVP.when = function(promise, label) {
return new Ember.RSVP.Promise(promise.then.bind(promise), label);
};
return Ember.$.ajax = function() {
return Ember.RSVP.when($ajax.apply(Ember.$, arguments), '$.ajax');
};
};
var PromiseAdapterInitializer = {
name: 'promise-adapter',
initialize: initialize
};
export {initialize};
export default PromiseAdapterInitializer;
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |