Ember.js 如何解决预期的Ember.PromiseProxyMixin拒绝?

Ember.js 如何解决预期的Ember.PromiseProxyMixin拒绝?,ember.js,Ember.js,我在尝试使用PromiseProxyMixin清理模板时遇到了这种奇怪的情况。其中一种情况是,我有一个组件在使用API完成搜索后呈现列表。搜索已取消公告,因为它在搜索词更改时触发。然后我写了一个取消机制,它会在做出一个新的承诺之前拒绝最后一个待定的承诺。我开始注意到这些被拒绝的承诺被吐到了我们的日志服务中,因为Ember.onerror捕获了所有未经处理的拒绝,即使我所期望的组件是这样的 通常,在承诺链中,通过确保在链的末尾放置.catch,可以避免未处理的错误。然而,我不知道如何做到这一点,如

我在尝试使用PromiseProxyMixin清理模板时遇到了这种奇怪的情况。其中一种情况是,我有一个组件在使用API完成搜索后呈现列表。搜索已取消公告,因为它在搜索词更改时触发。然后我写了一个取消机制,它会在做出一个新的承诺之前拒绝最后一个待定的承诺。我开始注意到这些被拒绝的承诺被吐到了我们的日志服务中,因为Ember.onerror捕获了所有未经处理的拒绝,即使我所期望的组件是这样的

通常,在承诺链中,通过确保在链的末尾放置.catch,可以避免未处理的错误。然而,我不知道如何做到这一点,如果承诺是用来在PromiseProxyMixin


下面是PromiseProxyMixin中预期拒绝的示例。

在分配承诺时,您可以使用this.catch来防止未处理基本承诺,并且仍然正确设置isRejected和reason:

this.set('promise', newPromise);
this.catch(function(err) {
  // Check if we should handle this or blow up
});
这里有一个例子来说明这一点

例如:

actions: {
  goSearch: function() {
    this.set('promise', cancellablePromise(this.get('query')));
    this.catch(function(err) {
      if (! err instanceof CancellationError) {
        throw err; // Unexpected rejection; should be considered unhandled.
      }
    });
  }
}