MST

星途 面试题库

面试题:JavaScript多维数组并发操作中的错误处理

给定一个三维数组 `let complexArray = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]`,有一个异步函数 `async function asyncDouble(num) { if (num % 2 === 0) { return num * 2; } else { throw new Error('Not an even number'); } }`,需要对该多维数组的每个元素并发执行这个异步函数。请实现一个方案,不仅要正确处理并发操作,还要能捕获并处理函数执行过程中抛出的错误,最后返回包含处理结果或错误信息的新数组。
41.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
async function processComplexArray(complexArray) {
    const processElement = async (element) => {
        try {
            return await asyncDouble(element);
        } catch (error) {
            return error.message;
        }
    };

    const processSubArray = async (subArray) => {
        return Promise.all(subArray.map(processElement));
    };

    return Promise.all(complexArray.map(processSubArray));
}

// 示例调用
processComplexArray([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]).then(result => {
    console.log(result);
});

上述代码实现步骤如下:

  1. 定义 processElement 函数,该函数接收数组中的单个元素,调用 asyncDouble 函数并处理可能抛出的错误。
  2. 定义 processSubArray 函数,该函数接收一个二维数组中的子数组,使用 Promise.all 并发处理子数组中的所有元素。
  3. processComplexArray 函数中,通过 Promise.all 并发处理三维数组中的所有二维子数组,最终返回包含处理结果或错误信息的新数组。