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

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

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

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

  • SmartWay

Ответ

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

Интервьюеры хотят услышать понимание работы с промисами в JavaScript, а именно использование метода Promise.race(), который позволяет получить результат первого выполненного промиса. Кандидат должен продемонстрировать знание, как работают промисы, их состояние и как обрабатывать результаты или ошибки.

Ответ:

Метод Promise.race() позволяет запустить несколько промисов и возвращает результат первого из них, который выполнится (либо успешно, либо с ошибкой). Это особенно полезно, когда необходимо получить результат самого быстрого запроса, игнорируя остальные.

Пошаговое объяснение:

  1. Создание промисов: Сначала создаем несколько промисов. Например, один из них имитирует успешный ответ, а другой - ошибку.

  2. Использование Promise.race(): Передаем массив созданных промисов в Promise.race().

  3. Обработка результата: Используем then() для обработки успешного результата и catch() для обработки ошибок.

Пример кода:

// Имитация промиса, который выполняется успешно через 1 секунду
const successPromise = new Promise((resolve) => {
    setTimeout(() => {
        resolve("Успех!");
    }, 1000);
});

// Имитация промиса, который завершается ошибкой через 500 мс
const errorPromise = new Promise((_, reject) => {
    setTimeout(() => {
        reject("Ошибка!");
    }, 500);
});

// Использование Promise.race для получения результата первого выполненного промиса
Promise.race([successPromise, errorPromise])
    .then(result => {
        console.log(result); // Вывод: "Ошибка!" (первый выполненный промис)
    })
    .catch(error => {
        console.error(error); // Обработка ошибки
    });

// Другие примеры использования:
const fastSuccess = new Promise((resolve) => setTimeout(resolve, 200, "Быстрый успех!"));
const slowSuccess = new Promise((resolve) => setTimeout(resolve, 1000, "Медленный успех!"));

// Пример с двумя успешными промисами
Promise.race([fastSuccess, slowSuccess])
    .then(result => console.log(result)); // Вывод: "Быстрый успех!"

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

  • Показать, как работает `Promise.all()` для сравнения.
  • Объяснить, в каких сценариях лучше использовать `Promise.race()`.
  • Предоставить дополнительные примеры с реальными API запросами.
  • Обсудить обработку ошибок при использовании `Promise.race()`.
Ответ помог?
Тренироваться бесплатно

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

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