MST

星途 面试题库

面试题:JavaScript 中函数方法并发使用基础

假设你有一个数组 `[1, 2, 3, 4, 5]`,需要并发调用数组中的每个元素作为参数传入一个异步函数 `asyncFunction`(该函数返回一个 Promise),并最终获取所有异步操作的结果。请使用 JavaScript 实现,说明你使用的函数方法以及原理。
37.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
const asyncFunction = async (num) => {
    // 模拟异步操作
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(num * 2);
        }, 1000);
    });
};

const arr = [1, 2, 3, 4, 5];

const results = Promise.all(arr.map(async (num) => await asyncFunction(num)));

results.then((values) => {
    console.log(values);
});

使用的函数方法及原理

  1. mapmap 方法用于创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。在这里,我们使用 map 遍历数组 arr 中的每个元素,并对每个元素调用 asyncFunction 异步函数。由于 asyncFunction 返回一个 Promisemap 遍历后得到的新数组中的每一项都是 Promise
  2. Promise.allPromise.all 方法接收一个 Promise 数组作为参数,当这个数组里的所有 Promise 都成功时,Promise.all 返回的 Promise 才会成功,并且其成功回调的参数是一个数组,包含了所有 Promise 的成功结果。这里使用 Promise.all 等待所有 asyncFunction 异步操作完成,并获取它们的结果。这样就实现了并发调用数组中的每个元素作为参数传入异步函数,并获取所有异步操作的结果。