0Pricing
JavaScript Academy · Урок

Промисы — состояния, цепочки и обработка ошибок

Создавайте и используйте промисы: состояния (ожидание/выполнен/отклонён), цепочки с then и обработка ошибок с помощью catch/finally

«Промисы — состояния, цепочки и обработка ошибок» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

Введение в промисы

Цель: изучить небольшие шаблоны работы с промисами.

  • Состояния: ожидает → выполнен/отклонён
  • Цепочки then
  • Обработка ошибок
  • Завершающие действия для очистки
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 1

Разрешение промиса

Промис начинает в состоянии ожидания и становится выполненным, когда вызывается 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);
});
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 2

Отклонение и обработка

При сбое используйте отклонение с ошибкой. Обработчик ошибки перехватывает любое отклонение выше него в цепочке.

// 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);
  });
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 3

Основы цепочек 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);
  });
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 4

Очистка после завершения

Блок завершающих действий предназначен для очистки после успеха или ошибки; он не получает значение или ошибку.

// 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");
  });
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 5

Знакомство с 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);
  });
Промисы — состояния, цепочки и обработка ошибок — иллюстрация 6

Проверка обработки ошибок промисов

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

Промисы — состояния, цепочки и обработка ошибок — иллюстрация 7

Повторение

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

Промисы — состояния, цепочки и обработка ошибок — иллюстрация 8

Часто задаваемые вопросы

Урок «Промисы — состояния, цепочки и обработка ошибок» бесплатный?

Да — полный текст урока «Промисы — состояния, цепочки и обработка ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Цикл событий и основы задач и микрозадач
  2. Промисы — состояния, цепочки и обработка ошибок
  3. Promise.all / any / race / allSettled — выбираем подходящий инструмент
← Назад к JavaScript Academy