НовоеAI-конструктор резюме: правишь прямо на листе A4, а нейросеть подсказывает, что усилитьКонструктор резюме на листе A4Попробовать
JobPath
Начать бесплатно

FrontendSeniorТехнический

Каким методом промиса выполнить несколько параллельных запросов и получить результат каждого

Встречался на собеседовании

  • SmartWay

Ответ

Что хотят услышать интервьюеры

Интервьюер ищет понимание работы с промисами в JavaScript, особенно с методами для выполнения параллельных запросов. Ожидается, что кандидат продемонстрирует знание метода Promise.all, объяснит, как он работает, и укажет на его преимущества и недостатки. Также важно показать, что кандидат способен обрабатывать результаты и ошибки.

Ответ:

Для выполнения нескольких параллельных запросов в JavaScript можно использовать метод Promise.all. Этот метод принимает массив промисов и возвращает новый промис, который выполняется, когда все промисы из массива будут выполнены или какой-либо из них будет отклонен.

Пример использования Promise.all:

// Импортируем библиотеку для HTTP-запросов, если необходимо
// Например, axios:
import axios from 'axios';

// Функция для выполнения нескольких API запросов параллельно
async function fetchData() {
    // Создаем массив промисов с запросами
    const requests = [
        axios.get('https://api.example.com/data1'),
        axios.get('https://api.example.com/data2'),
        axios.get('https://api.example.com/data3')
    ];

    try {
        // Используем Promise.all для выполнения запросов параллельно
        const responses = await Promise.all(requests);
        
        // Обрабатываем результаты
        const results = responses.map(response => response.data);
        console.log(results);
    } catch (error) {
        // Обрабатываем ошибку
        console.error('Ошибка при выполнении запросов:', error);
    }
}

// Запускаем функцию для выполнения запросов
fetchData();

Объяснение кода:

  1. Импорт библиотеки - здесь мы используем axios для выполнения HTTP-запросов.
  2. Создание массива промисов - мы создаем массив с запросами к API.
  3. Promise.all - ожидаем выполнения всех запросов одновременно.
  4. Обработка результатов - результаты извлекаются из ответов.
  5. Обработка ошибок - если хотя бы один промис отклоняется, управление передается в блок catch.

Примечания:

  • Преимущества: Promise.all позволяет одновременно выполнять запросы, что ускоряет процесс получения данных.
  • Недостатки: если один из промисов отклонен, весь вызов отклоняется, что требует дополнительной обработки ошибок.

Что могут спросить дальше

  • Показать пример с использованием fetch вместо axios.
  • Объяснить, как обрабатывать ошибки для отдельных запросов.
  • Демонстрировать использование Promise.allSettled для обработки всех результатов.
  • Объяснить, как использовать Promise.race для получения первого завершившегося запроса.
Ответ помог?
Тренироваться бесплатно

Связаться с поддержкой

Выбери, где удобнее написать