7

AJAX データ呼び出しと Ember RSVP Promises で Ember の PromiseProxyMixin を使用しています。各ルート/テンプレートにエラー処理を組み込むのではなく、次のように、拒否されたプロミスをアプリケーション ルートのエラー ハンドラーにバブルアップしたいと考えています。

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

現在、Promise が拒否された場合、拒否された Promise は Application ルートにバブルアップしているようには見えません (これは、PromiseProxyMixin が Promise の .fail() 関数にアタッチし、それ以上のバブルを防止するためですか?もしそうなら、続行する方法はありますか?泡立ち?)

PromiseProxyMixin を使用して、拒否されたプロミスがアプリケーション ルートにバブルアップすることを許可することは可能ですか?

4

1 に答える 1

3

問題が解決するかどうかはわかりませんが、Es6 の promise と jQuery の promise に違いがあったため、次の初期化子を使用して、デフォルトですべての jQuery の promise を Es6 に変換します。when以下の方法を使用して、他の「thenables」も変換します。


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;

于 2015-09-29T13:45:37.177 に答える