Как всплыть отклоненное обещание при использовании 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;