Sobes.tech
Back to questions
Middle+
1

Расскажи про Promise: что это такое, состояния и статические методы (особенно разница между Promise.all и Promise.race)?

Companies where asked
НСПК

Answer from AI

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 упрощают работу с асинхронным кодом, позволяя писать более понятный и управляемый поток выполнения.