Javascript 当我的异步函数前面没有wait时,try-catch块会捕获错误吗?
如果我的异步函数前面没有wait,下面的JavaScript try-catch块还会捕获错误吗Javascript 当我的异步函数前面没有wait时,try-catch块会捕获错误吗?,javascript,asynchronous,error-handling,async-await,try-catch,Javascript,Asynchronous,Error Handling,Async Await,Try Catch,如果我的异步函数前面没有wait,下面的JavaScript try-catch块还会捕获错误吗 async () => { try { someAsynchronouseFunction(); } catch (err) { // will errors from my asynchronous function still be caught here? } } 不,它们不会,因为某些AsynchronouseFunction;将只解析为被拒
async () => {
try {
someAsynchronouseFunction();
} catch (err) {
// will errors from my asynchronous function still be caught here?
}
}
不,它们不会,因为某些AsynchronouseFunction;将只解析为被拒绝的承诺,而被拒绝的承诺本身不会导致错误,即使在try块中也是如此。相反,你只会看到承诺中的错误:错误!在控制台中:
异步函数someAsynchronouseFunction{
等待新的允诺者=>setTimeoutres,1000;
log'someAsynchronouseFunction的结束,即将抛出';
抛出新错误'err!';
}
常量foo=async=>{
试一试{
一些异步函数;
}犯错误{
console.log“发现错误:”+错误;
}
console.log'end of foo';
}
傅 不,它们不会,因为某些AsynchronouseFunction;将只解析为被拒绝的承诺,而被拒绝的承诺本身不会导致错误,即使在try块中也是如此。相反,你只会看到承诺中的错误:错误!在控制台中:
异步函数someAsynchronouseFunction{
等待新的允诺者=>setTimeoutres,1000;
log'someAsynchronouseFunction的结束,即将抛出';
抛出新错误'err!';
}
常量foo=async=>{
试一试{
一些异步函数;
}犯错误{
console.log“发现错误:”+错误;
}
console.log'end of foo';
}
傅;你测试过了吗?怎么搞的?我猜不会,因为如果不等待,您将只调用一个返回承诺的函数,错误将传递给任何catch回调,而不是调用方。如果某个AsynchronouseFunction确实是异步的,它只会返回一个未解析的承诺,而您甚至不存储该承诺,代码将继续。异步函数随后可能会执行并抛出错误,而该错误将不会被捕获。您测试过它吗?怎么搞的?我猜不会,因为如果不等待,您将只调用一个返回承诺的函数,错误将传递给任何catch回调,而不是调用方。如果某个AsynchronouseFunction确实是异步的,它只会返回一个未解析的承诺,而您甚至不存储该承诺,代码将继续。异步函数随后可能会执行并抛出错误,而该错误将不会被捕获。