我正在用JavaScript编写一个简单的REST API,我想知道在使用Promise和解析/拒绝机制时最好的方法。
起初我想签署承诺签名:
MyApi.getSomeData()
.then(responseSuccess => console.log(responseSuccess))
.catch(responseError => console.log(responseError)
其中success
表示我们得到了代码200
并且有一些数据,但错误意味着我们从服务器获得404
。我想确保将使用API方法的最终用户将保证错误(catch)他将获得特定对象。
但是如果promise在某个地方抛出一些异常(某些运行时错误或其他一些错误)怎么办?然后使用此Error
而不是我的responseError结构拒绝承诺。
在这些情况下,最好的方法是什么?如何区分操作成功,操作失败(但故意,即404
代码)和操作意外错误?
答案 0 :(得分:0)
promise中的运行时错误将触发catch块。没有避免这种情况。但是,您可以通过检查错误的主体来区分运行时错误和网络错误。所以假设
responseError = {
type: 'NETWORK_ERROR',
status: 400,
message: 'Invalid input'
}
if (responseError.type === 'NETWORK_ERROR') {
// Network error code here
} else {
// All other types of errors
}
您也可以在一个公共场所抽象这个逻辑,以便重复使用它。