簡體   English   中英

使用Ember.PromiseProxyMixin時如何冒泡被拒絕的承諾

[英]How to bubble up a rejected promise when using 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;
        }
    }
});

目前,如果承諾被拒絕,被拒絕的承諾似乎沒有出現在Application路由中(這是因為PromiseProxyMixin附加到promise的.fail()函數並阻止進一步冒泡?如果是這樣,有沒有辦法繼續冒泡?)

是否可以使用PromiseProxyMixin並允許被拒絕的承諾冒泡到Application路由?

我不確定它會解決你的問題,但我們確實遇到了Es6 promises和jQuery promises的差異,因此我們默認使用以下初始化程序將所有jQuery promise轉換為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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM