MST

星途 面试题库

面试题:Node.js async/await 错误处理与并发控制

在 Node.js 项目中,使用 async/await 处理多个异步任务。假设有三个异步函数 `asyncFunction1`、`asyncFunction2`、`asyncFunction3`,`asyncFunction1` 可能会抛出错误,`asyncFunction2` 和 `asyncFunction3` 需并发执行且在 `asyncFunction1` 成功后执行,最后将三个函数的结果汇总处理。请编写实现此逻辑的代码,并阐述如何优雅地处理 `asyncFunction1` 抛出的错误。
28.3万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
async function asyncFunction1() {
    // 模拟异步操作,这里简单返回一个值,实际可能是数据库查询等操作
    return 'Result of asyncFunction1';
}

async function asyncFunction2() {
    // 模拟异步操作
    return 'Result of asyncFunction2';
}

async function asyncFunction3() {
    // 模拟异步操作
    return 'Result of asyncFunction3';
}

async function main() {
    try {
        const result1 = await asyncFunction1();
        const [result2, result3] = await Promise.all([asyncFunction2(), asyncFunction3()]);
        const allResults = [result1, result2, result3];
        console.log('汇总结果:', allResults);
        // 在这里对汇总结果进行进一步处理
    } catch (error) {
        console.error('asyncFunction1 抛出的错误:', error);
        // 这里可以进行错误处理,比如记录日志、返回特定错误信息给客户端等
    }
}

main();
  1. 代码逻辑解释
    • asyncFunction1asyncFunction2asyncFunction3 是三个模拟的异步函数。
    • main 函数中,首先使用 await 等待 asyncFunction1 执行完毕。如果 asyncFunction1 抛出错误,会直接进入 catch 块。
    • asyncFunction1 成功执行后,使用 Promise.all 并发执行 asyncFunction2asyncFunction3,并等待它们都完成,将结果解构赋值给 result2result3
    • 然后将三个函数的结果汇总到 allResults 数组中,可以在后续对其进行进一步处理。
  2. 错误处理
    • 使用 try...catch 块来捕获 asyncFunction1 抛出的错误。如果 asyncFunction1 抛出错误,await 表达式会暂停执行,并将控制权转移到 catch 块。在 catch 块中,可以记录错误日志、返回特定的错误信息给客户端等,以此优雅地处理错误。