![](/img/trans.png)
[英]Is using async/await the only way to receive a resolved promise from Promise.reject()?
[英]Using Promise.reject() in async/await catch handler
我只是想知道使用以下代码是否是一个好习惯:
const myFun = async () => {
try {
const response = await api();
if(response.status === 200) {
return response.data;
}
} catch(err) {
return Promise.reject(err);
}
}
这里myFun
将返回一个已解决/拒绝的 Promise,它将被另一个 function 捕获。我只是想知道这是正确的方法还是有其他选择?
尝试从api()
重新抛出错误将一事无成。
使用async
function 将导致Promise.reject(error)
在抛出错误时隐式调用。
像这样写你的 function:
const myFun = async () => {
const response = await api();
if (response.status === 200) {
return response.data;
}
// You might want to return something else here
}
那么调用function还是会报错:
try {
await myFun();
} catch (error) {
// error still received
}
你正在做的是混合 async/await 和 Promises。 您可以从 catch 块中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
只能在异步代码块中调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.