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