Ответ
Что хотят услышать интервьюеры
Интервьюеры хотят услышать понимание работы с промисами в JavaScript, а именно использование метода Promise.race(), который позволяет получить результат первого выполненного промиса. Кандидат должен продемонстрировать знание, как работают промисы, их состояние и как обрабатывать результаты или ошибки.
Ответ:
Метод Promise.race() позволяет запустить несколько промисов и возвращает результат первого из них, который выполнится (либо успешно, либо с ошибкой). Это особенно полезно, когда необходимо получить результат самого быстрого запроса, игнорируя остальные.
Пошаговое объяснение:
Создание промисов: Сначала создаем несколько промисов. Например, один из них имитирует успешный ответ, а другой - ошибку.
Использование
Promise.race(): Передаем массив созданных промисов вPromise.race().Обработка результата: Используем
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()`.