Как всплыть отклоненное обещание при использовании Ember.PromiseProxyMixin

Я использую PromiseProxyMixin Ember с вызовами данных AJAX и обещаниями Ember RSVP. Вместо того, чтобы включать обработку ошибок в каждый маршрут / шаблон, я хотел бы выдать отклоненное обещание вплоть до обработчика ошибок в маршруте приложения следующим образом:

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

В настоящее время, если обещание отклонено, отклоненное обещание не выглядит пузырем на пути к приложению (это потому, что PromiseProxyMixin присоединяется к функции обещания.fail() и предотвращает дальнейшее всплытие? Если так, есть ли способ продолжить? пузырится?)

Можно ли использовать PromiseProxyMixin, а также позволить отклоненному обещанию всплыть на маршрут приложения?

1 ответ

Я не уверен, что это решит вашу проблему, но мы столкнулись с различиями в обещаниях Es6 и обещаниях jQuery, поэтому мы конвертируем все обещания jQuery в 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;
Другие вопросы по тегам