Назад к вопросам
Middle+
2
Расскажи про Promise: что это такое, состояния и статические методы (особенно разница между Promise.all и Promise.race)?
Компании, где спрашивали
НСПК
Ответ от нейросети
sobes.tech AI
Promise — это объект в JavaScript, представляющий результат асинхронной операции, которая может завершиться успешно или с ошибкой.
Состояния Promise:
- pending (ожидание) — начальное состояние, операция не завершена.
- fulfilled (выполнено) — операция успешно завершена.
- rejected (отклонено) — операция завершилась с ошибкой.
Статические методы:
-
Promise.all(iterable)— принимает массив промисов и возвращает новый промис, который:- выполняется, когда все промисы из массива выполнены успешно,
- или отклоняется сразу, если хотя бы один промис отклонён.
-
Promise.race(iterable)— возвращает промис, который завершится так же, как первый завершившийся промис из переданного массива (успешно или с ошибкой).
Пример:
const p1 = new Promise(resolve => setTimeout(() => resolve('p1'), 100));
const p2 = new Promise(resolve => setTimeout(() => resolve('p2'), 200));
Promise.all([p1, p2]).then(results => console.log('All:', results)); // Ждёт оба промиса
Promise.race([p1, p2]).then(result => console.log('Race:', result)); // Ждёт первый завершившийся
Таким образом, Promise упрощают работу с асинхронным кодом, позволяя писать более понятный и управляемый поток выполнения.