Медленный await

Синтаксис async-await позволяет писать более понятный код, но при неправильном использовании часто жертвой становится производительность программы.

Перепишите функцию asyncZip, которая принимает две асинхронные функции (возвращающие массивы промисов) и возвращает промис с массивом, где сцеплены значения из обоих массивов.

Нужно полностью повторить поведение исходной функции, но сделать так, чтобы она работала быстрее.

Исходный код

async function asyncZip(fn1, fn2) { const arr1 = await fn1(); const arr2 = await fn2(); if (arr1.length !== arr2.length) { throw "Массивы разной длины"; } return arr1.map((_, i) => [arr1[i], arr2[i]]); }

Пример вызова

const fetchRainbowColors = async () => [ 'Красный', 'Оранжевый', 'Желтый', 'Зеленый', 'Голубой', 'Синий', 'Фиолетовый', ]; const fetchDeadlySins = async () => [ 'Корыстолюбие', 'Отчаяние', 'Жор', 'Зависть', 'Гнев', 'Сладострастие', 'Фанфаронство', ]; asyncZip(fetchRainbowColors, fetchDeadlySins).then( array => console.log("✅", array), error => console.log("💔", error), );