当我尝试使用PromiseProxyMixin
来清理我的模板时,我遇到了这种奇怪的情况。其中一种情况是,当我使用我们的API完成搜索后,我有一个组件呈现列表。搜索被去除了,因为它会在搜索词发生变化时触发。然后我写了一个取消机制,在制作一个新的this.set('promise', newPromise)
之前拒绝最后一个未决的承诺。我开始注意到这些被拒绝的承诺正在向我们的日志记录服务吐出,因为Ember.onerror
正在捕获所有未处理的拒绝,即使组件我期望那样。
通常在承诺链中,您可以通过确保在链的末尾放置.catch()
来避免未处理的错误。但是,如果承诺要在PromiseProxyMixin
中使用,我不知道如何执行此操作。
PromiseProxyMixin
中有JSBin that illustrates the problem 期望的拒绝。
答案 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
});