![](/img/trans.png)
[英]How to bubble up a rejected promise when using Ember.PromiseProxyMixin
[英]How do I resolve an expected Ember.PromiseProxyMixin rejection?
当我尝试使用PromiseProxyMixin
清理模板时遇到了这种奇怪的情况。 一种情况是,当我有一个用我们的API完成搜索后呈现列表的组件。 搜索被删除,因为它会在搜索字词更改时触发。 然后,我编写了一个取消机制,该机制将在做出新的this.set('promise', newPromise)
之前拒绝最后一个未决的承诺。 我开始注意到这些拒绝的承诺正在向我们的日志记录服务吐出,因为Ember.onerror
捕获了所有未处理的拒绝,即使我曾期望过该组件。
通常,在.catch()
链中,可以通过确保在链的末尾放置.catch()
来避免未处理的错误。 但是,如果PromiseProxyMixin
使用了promise,我不知道该怎么做。
事实证明,在分配承诺时,您可以使用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.
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.