Javascript 在异步方法内抛出时未捕获错误
当抛出错误时,我使用异步等待并通过try-catch处理错误。method3()未在method1()中捕获它。但是,如果我在中删除了async。method2()foreach我能够捕获method1()中的错误!但是如果我在foreach中删除async,我就不能使用wait,我不能使用wait!有办法解决这个问题吗Javascript 在异步方法内抛出时未捕获错误,javascript,node.js,asynchronous,async-await,try-catch,Javascript,Node.js,Asynchronous,Async Await,Try Catch,当抛出错误时,我使用异步等待并通过try-catch处理错误。method3()未在method1()中捕获它。但是,如果我在中删除了async。method2()foreach我能够捕获method1()中的错误!但是如果我在foreach中删除async,我就不能使用wait,我不能使用wait!有办法解决这个问题吗 class A { async method1(A, B) { return new Promise(async (resolve, reject) =
class A {
async method1(A, B) {
return new Promise(async (resolve, reject) => {
try {
await this.method2(A, B);
} catch (error) {
console.log(error, "error")
};
});
}
async method2(A, B, C) {
await somethingelsecalled();
Array.forEach(async (segment, index) => {
result = await somethingcalled()
this.method3(result);
});
}
method3() {
throw "error";
}
}
用for of循环替换foreach解决了这个问题
class A {
async method1(A, B) {
return new Promise(async (resolve, reject) => {
try {
await this.method2(A, B);
} catch (error) {
console.log(error, "error")
};
});
}
async method2(A, B, C) {
await somethingelsecalled();
for (const [index, segment] of Array.entries()) {
result = await somethingcalled()
this.method3(result);
});
}
method3() {
throw "error";
}
}
请不要在
循环中使用async/await
。这样的forEach
循环有没有其他方法可以在forEach中使用await?for of
循环的效果更好!但是有什么解释为什么它在早期的方法中不起作用吗?也许这会指导你