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

时间:2015-10-29 15:04:17

标签: ember.js

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

通常在承诺链中,您可以通过确保在链的末尾放置.catch()来避免未处理的错误。但是,如果承诺要在PromiseProxyMixin中使用,我不知道如何执行此操作。

PromiseProxyMixin中有JSBin that illustrates the problem 期望的拒绝。

1 个答案:

答案 0 :(得分:0)

在分配承诺时,您可以使用this.catch来阻止基础承诺未处理并仍设置isRejected和{{ 1}}正确:

reason

以下是an example from the previous code说明了这一点。

示例可能如下所示:

this.set('promise', newPromise);
this.catch(function(err) {
  // Check if we should handle this or blow up
});