如何在使用Ember.PromiseProxyMixin时冒出被拒绝的承诺

我正在使用Ember的PromiseProxyMixin和AJAX数据调用和Ember RSVP Promises。 我不想在每个路由/模板中加入错误处理,而是想将一个被拒绝的承诺提交给Application路由中的错误处理程序,如下所示:

export default Ember.Route.extend({
    actions: {
        error: function(error, transition) {
            return this.transitionTo('error');
            return false;
        }
    }
});

目前,如果一个承诺被拒绝,被拒绝的承诺不会出现在应用程序路线上的泡沫(这是因为PromiseProxyMixin附加到承诺的.fail()函数并阻止进一步的冒泡?如果是,是否有任何方法继续冒泡?)

是否可以使用PromiseProxyMixin,并允许被拒绝的承诺冒泡到Application路由?


我不确定它会解决你的问题,但是我们确实遇到了Es6承诺和jQuery承诺的差异,因此我们默认使用以下初始化工具将所有jQuery承诺转换为Es6。 我们还使用下面的when方法转换其他“thennables”:


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;

链接地址: http://www.djcxy.com/p/29449.html

上一篇: How to bubble up a rejected promise when using Ember.PromiseProxyMixin

下一篇: Better way to call Function multiple times