[英]Handling Errors early in the Promise Chain
我試圖找到一種處理諾言鏈上錯誤的一般方法。 在下面的片段中,我想直接在connection.js中處理潛在的連接錯誤。
function getData() {
return fetch(myEndpoint)
.catch(err => handleConnectionError(err)) // redirect to error page or similar
}
// import connection
connection.getData()
.then(data => handleData(data.foo))
因此,這種情況可以通過兩種方式發揮作用:
因此,除了我每次在應用程序中的某處使用getData()函數時,沒有比捕獲和處理錯誤更好的方法了嗎?
進行此操作的最佳方法是進行最后的處理以解決所有錯誤。 例如:
function errorHandler(e) {
if (e instanceof x) {
//handle here
}
}
接着:
fetch(endPoint).then(doSomething).then(doAnotherThing).catch(err => errorHandler(err))
如果沿鏈條的訪存或任何其他promise產生錯誤,那么其余的then()語句將被跳過,並由最終的catch函數捕獲。 從那里開始,您將需要確保所有諾言可能引發的所有類型的錯誤都得到了解決。
但是,您將需要擺脫getData中的問題,因為它將處理該鏈的其余部分,因為該錯誤已得到解決。
希望能有所幫助
因此,除了我每次在應用程序中的某處使用
getData()
函數時,沒有比捕獲和處理錯誤更好的方法了嗎?
是的,這正是您應該做的:
function getData() {
return fetch(myEndpoint)
}
// elsewhere:
connection.getData().then(handleData, handleConnectionError);
您通常不知道是否總是要“ 重定向到錯誤頁面或類似頁面 ”。 也許在應用程序的某些位置,您可以通過偽造響應數據來處理連接錯誤,而在其他位置,您可能希望顯示錯誤消息而不是觸發重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.