Перейти к основному содержимому

03.01 Выполнение параллельных HTTP запросов

Выполнение параллельных HTTP запросов возможно с помощью узла JavaScript.

/*
* Этот код структурирован для одновременной обработки нескольких HTTP GET запросов,
* используя библиотеку axios для выполнения запросов и Promise.all для их одновременного управления.
*/

// Импортирование библиотеки axios для выполнения HTTP запросов
import axios from "axios";

export default async function run({ execution_id, input, data }) {
// Определение массива URL-адресов для выполнения HTTP запросов
const urls = ['https://dummyjson.com/carts', 'https://dummyjson.com/users', 'https://dummyjson.com/quotes'];

try {
// Использование Promise.all для одновременного выполнения HTTP запросов к URL, определенным выше
// Функция map применяет 'httpRequest' к каждому URL в массиве 'urls'
const results = await Promise.all(urls.map(url => httpRequest(url)));

// Возврат результатов HTTP запросов
// Здесь вы можете обрабатывать результаты по мере необходимости в вашем приложении
return {
res: results
};
} catch (error) {
// Вывод любых ошибок в консоль
console.error(error);
// Повторное выбрасывание ошибки для обработки вызывающим эту функцию
throw error;
}

// Определение асинхронной функции 'httpRequest' для обработки индивидуальных HTTP запросов
async function httpRequest(rawURL) {
try {
// Выполнение GET запроса к предоставленному URL с использованием axios
const response = await axios({
method: "GET",
url: rawURL
});
// Возврат части данных из ответа
// Это может быть изменено в соответствии с потребностями приложения
return response.data;
} catch (error) {
// Вывод любых ошибок, возникших во время HTTP запроса
console.error(error);
// Повторное выбрасывание ошибки для обработки вызывающим функцию 'httpRequest'
throw error;
}
}
}