PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Какие задачи решает Promise?

Асинхронность и Event Loop

Promise решает проблему управления асинхронными операциями: он избавляет от «callback hell», даёт единую обработку ошибок и позволяет комбинировать асинхронные задачи.

Проблемы колбэков, которые решает Promise

1. Вложенность (callback hell)

// Было
getUser(id, (u) => getPosts(u, (p) => getComments(p, (c) => render(c))));

// Стало
getUser(id).then(getPosts).then(getComments).then(render);

2. Обработка ошибок

Один catch ловит ошибку из любого звена цепочки, вместо проверки ошибки в каждом колбэке.

doAsync().then(step2).then(step3).catch(handleError);

3. Композиция асинхронных операций

Комбинаторы решают типовые задачи:

  • Promise.all — дождаться всех параллельно.
  • Promise.race — первый завершившийся (таймауты).
  • Promise.allSettled — все со статусами.

4. Гарантии

  • Результат фиксируется один раз (нет двойного вызова колбэка).
  • then всегда асинхронен (предсказуемый порядок через микрозадачи).

Коротко для собеседования

Promise решает: вложенность колбэков (плоские цепочки), разрозненную обработку ошибок (единый catch), композицию асинхронных операций (all/race/allSettled) и даёт гарантии однократного результата. Это основа для async/await.

Другие вопросы раздела