Какие задачи решает 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.