[英]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.