繁体   English   中英

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

[英]How do I resolve an expected Ember.PromiseProxyMixin rejection?

当我尝试使用PromiseProxyMixin清理模板时遇到了这种奇怪的情况。 一种情况是,当我有一个用我们的API完成搜索后呈现列表的组件。 搜索被删除,因为它会在搜索字词更改时触发。 然后,我编写了一个取消机制,该机制将在做出新的this.set('promise', newPromise)之前拒绝最后一个未决的承诺。 我开始注意到这些拒绝的承诺正在向我们的日志记录服务吐出,因为Ember.onerror捕获了所有未处理的拒绝,即使我曾期望过该组件。

通常,在.catch()链中,可以通过确保在链的末尾放置.catch()来避免未处理的错误。 但是,如果PromiseProxyMixin使用了promise,我不知道该怎么做。

这是一个JSBin,它说明PromiseProxyMixin 预期的拒绝问题

事实证明,在分配承诺时,您可以使用this.catch防止未处理基础承诺,并且仍然正确设置isRejectedreason

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.
      }
    });
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM