JavaScript异步任务的异常处理方法
function r1() {
try {
r2() // 因为r2函数是异步任务,晚于同步任务
} catch (error) {
console.log(error); // 捕获不到r2函数抛出的错误
}
console.log('r1'); // 先执行同步任务
}
// 用setTimeout模拟异步任务
function r2() {
setTimeout(() => {
throw new Error('r2函数发生错误')
console.log('r2');
}, 1000);
}
r1()
解决方法:
async function r1() {
try {
await r2() // await 会等待r2()执行完成
} catch (error) {
console.log(error);
}
}
function r2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject('r2函数发生错误')
}, 1000);
});
}
r1()