Вызов асинхронной функции из функционального map в JavaScript, как? Есть массив объектов. Хочется для него выполнить map делая HTTP запрос для каждого объекта и возвращая новый объект-ответ.
Как это сделать, если для HTTP запросов используется модуль http из Node.js, который выполняет вызов асинхронно?

21 Авг 2019 в 07:09
150 +1
0
Ответы
1

Для выполнения асинхронных операций внутри функции map в JavaScript, можно воспользоваться асинхронными функциями (async/await) или промисами. В случае использования модуля http из Node.js, следует использовать функции, которые возвращают промисы (например, http.get) и использовать async/await или then/catch для обработки результатов.

Ниже приведен пример реализации данной задачи с использованием Promise:

const http = require('http');
const dataArray = [{ id: 1, data: 'data1' }, { id: 2, data: 'data2' }];
const fetchData = (data) => {
return new Promise((resolve, reject) => {
http.get(`http://example.com/${data.id}`, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
resolve({ id: data.id, responseData });
});
}).on('error', (error) => {
reject(error);
});
});
};
const fetchAllData = async (dataArray) => {
const resultArray = await Promise.all(dataArray.map(data => fetchData(data)));
return resultArray;
};
fetchAllData(dataArray)
.then(result => {
console.log(result);
})
.catch(error => {
console.error(error);
});

В данном примере функция fetchData выполняет асинхронный HTTP запрос для каждого объекта из массива и возвращает промис с результатом. Функция fetchAllData использует метод Promise.all для запуска всех запросов параллельно и дожидается завершения всех запросов. Результат обработки асинхронных вызовов выводится в консоль.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир