我只是想知道使用下面的代码是否是一个好的做法。
const myFun = async () => {
try {
const response = await api();
if(response.status === 200) {
return response.data;
}
} catch(err) {
return Promise.reject(err);
}
}
这里 myFun
将返回一个已解决的reject Promise,并被另一个函数捕获。我只是想知道这是否是正确的方法,或者有其他的方法吗?
你试图重新抛出错误,并没有达到任何目的。api()
.
使用 async
功能将导致 Promise.reject(error)
当发生错误时,隐式调用。
就像这样写你的函数。
const myFun = async () => {
const response = await api();
if (response.status === 200) {
return response.data;
}
// You might want to return something else here
}
然后调用的函数仍然会收到错误。
try {
await myFun();
} catch (error) {
// error still received
}
你所做的是将asyncawait和Promises混合在一起. 你可以直接 throw
的 err
从捕获块内部。
const myFun = async () => {
try {
const response = await api();
if(response.status === 200) {
return response.data;
}
} catch(err) {
throw err;
}
}
在这之后,你可以在任何地方调用 myFun
.
两种情况的最终结果是一样的。唯一的区别是: throw
可以在JS代码的任何地方使用,但 Promise.reject
只能在异步代码块中调用,只能在异步代码块中调用