MST

星途 面试题库

面试题:JavaScript async/await 中的错误处理与并发控制

假设你有多个异步任务,这些任务之间相互独立,使用 async/await 实现并发执行这些任务,并处理可能出现的错误,且要求在所有任务完成或其中一个任务出错时都能有相应的提示信息。请编写代码示例。
33.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
async function runTasks() {
    const tasks = [
        async () => {
            // 模拟异步任务1
            await new Promise((resolve) => setTimeout(resolve, 1000));
            return '任务1完成';
        },
        async () => {
            // 模拟异步任务2
            await new Promise((resolve) => setTimeout(resolve, 1500));
            return '任务2完成';
        },
        async () => {
            // 模拟异步任务3,抛出错误
            await new Promise((_, reject) => setTimeout(() => reject(new Error('任务3出错')), 2000));
        }
    ];

    try {
        const results = await Promise.all(tasks.map(task => task()));
        console.log('所有任务完成:', results);
    } catch (error) {
        console.error('其中一个任务出错:', error.message);
    }
}

runTasks();

上述代码中:

  1. 定义了一个tasks数组,每个元素是一个异步函数,模拟不同的异步任务。
  2. 使用Promise.all方法并发执行这些异步任务,map方法将每个异步任务函数进行调用。
  3. try...catch块中捕获可能出现的错误。如果所有任务成功完成,会在try块中打印所有任务的结果;如果其中一个任务出错,会在catch块中打印错误信息。