Промисы — состояния, цепочки и обработка ошибок
Создавайте и используйте промисы: состояния (ожидание/выполнен/отклонён), цепочки с then и обработка ошибок с помощью catch/finally
«Промисы — состояния, цепочки и обработка ошибок» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.
Введение в промисы
Цель: изучить небольшие шаблоны работы с промисами.
- Состояния: ожидает → выполнен/отклонён
- Цепочки then
- Обработка ошибок
- Завершающие действия для очистки

Разрешение промиса
Промис начинает в состоянии ожидания и становится выполненным, когда вызывается resolve.
// Create a Promise and resolve it
function waitMs(ms) {
return new Promise(function (resolve) {
setTimeout(function () {
resolve("done");
}, ms);
});
}
console.log("Start");
waitMs(10).then(function (msg) {
console.log("Resolved:", msg);
});

Отклонение и обработка
При сбое используйте отклонение с ошибкой. Обработчик ошибки перехватывает любое отклонение выше него в цепочке.
// Reject to signal an error; handle with catch
function maybeFail(ok) {
return new Promise(function (resolve, reject) {
if (ok) {
resolve("ok");
} else {
reject(new Error("bad"));
}
});
}
maybeFail(true)
.then(function (v) {
console.log("A:", v);
return maybeFail(false);
})
.catch(function (e) {
console.log("Caught:", e.message);
});

Основы цепочек then
Каждый вызов then может вернуть значение или промис. Следующий шаг получает это значение.
// Chain then steps; return values flow to the next then
Promise.resolve(2)
.then(function (n) {
return n * 3;
})
.then(function (n) {
console.log("Result:", n);
});

Очистка после завершения
Блок завершающих действий предназначен для очистки после успеха или ошибки; он не получает значение или ошибку.
// finally runs whether fulfilled or rejected
function task(ok) {
return new Promise(function (resolve, reject) {
ok ? resolve("yay") : reject(new Error("oops"));
});
}
task(false)
.catch(function (e) {
console.log("Handled:", e.message);
})
.finally(function () {
console.log("Cleanup done");
});

Знакомство с Promise.all
Promise.all разрешается массивом результатов или отклоняется, если один из элементов завершается ошибкой.
// Promise.all waits for all; rejects fast if any fail
const a = waitMs(5);
const b = Promise.resolve("B");
Promise.all([a, b])
.then(function (values) {
console.log("All:", values);
})
.catch(function (e) {
console.log("All failed:", e.message);
});

Проверка обработки ошибок промисов
Быстрая проверка: где обрабатывать ошибки?

Повторение
Повторение: используйте resolve при успехе, отклонение — при ошибках, соединяйте шаги с помощью then, обрабатывайте проблемы через catch и применяйте finally для очистки.

Часто задаваемые вопросы
Урок «Промисы — состояния, цепочки и обработка ошибок» бесплатный?
Да — полный текст урока «Промисы — состояния, цепочки и обработка ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Промисы — состояния, цепочки и обработка ошибок»?
Создавайте и используйте промисы: состояния (ожидание/выполнен/отклонён), цепочки с then и обработка ошибок с помощью catch/finally Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Промисы — состояния, цепочки и обработка ошибок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Цикл событий и основы задач и микрозадач
- Промисы — состояния, цепочки и обработка ошибок
- Promise.all / any / race / allSettled — выбираем подходящий инструмент