Проблемы колбэков
Вложенность («ад колбэков»), сложная обработка ошибок, трудно композировать параллельные задачи, inversion of control у сторонних API.
Что дают Promise
- Линеаризация асинхронного кода через цепочки /
async-await.
- Предсказуемые ошибки — reject →
catch / try/catch.
- Комбинаторы — дождаться всех/первого результата.
- Стандартный контракт для библиотек и
fetch.
- Однократное settle — состояние фиксируется.
async function load() {
try {
const [user, posts] = await Promise.all([
fetch("/api/user").then((r) => r.json()),
fetch("/api/posts").then((r) => r.json()),
]);
return { user, posts };
} catch (e) {
console.error(e);
}
}
Кратко: Promise делают асинхронность управляемой и композируемой.