Дмитрий Нечаев
Метод then() в JavaScript
В JavaScript для работы с асинхронными операциями часто используются промисы. Промис — это объект, который представляет собой завершение или неудачу асинхронной операции и её результат. Метод .then() является частью прототипа Promise и используется для планирования работы с успешным или ошибочным исходом промиса.
Основы метода .then()
Метод .then() принимает два аргумента: функцию для обработки успешного исхода и функцию для обработки ошибки. Важно понимать, что метод .then() всегда возвращает новый промис, что позволяет строить цепочки промисов.
Синтаксис
promise.then(onFulfilled, onRejected);onFulfilled— функция, которая будет вызвана, если промис исполнится успешно. Эта функция имеет один аргумент, значение, с которым промис был выполнен.onRejected— функция, которая будет вызвана, если промис завершится с ошибкой. Этот параметр необязательный.
Метод then() является фундаментальным для работы с Promise в JavaScript. Он позволяет обрабатывать результат успешного выполнения или ошибку промиса. Понимание того, как правильно использовать then(), критически важно для написания асинхронного кода. Для тех, кто хочет получить более глубокие знания о работе с Promise, включая async/await, Event Loop и другие продвинутые концепции, настоятельно рекомендуем наш курс. Если вы хотите детальнее погрузиться в JavaScript — приходите на наш большой курс JavaScript Advanced. На курсе 196 уроков и 18 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Пример использования
Допустим, у нас есть функция, которая возвращает промис, разрешающийся с некоторым значением после 2 секунд:
function resolveLater() {
return new Promise((resolve) => {
setTimeout(() => resolve("обещание выполнено"), 2000);
});
}Мы можем использовать .then() для обработки значения после выполнения промиса:
resolveLater().then(value => {
console.log(value); // Выведет "обещание выполнено"
});Обработка ошибок
.then() также может принимать вторую функцию, которая будет вызвана, если промис будет отклонён:
function rejectLater() {
return new Promise((resolve, reject) => {
setTimeout(() => reject(new Error("произошла ошибка")), 2000);
});
}
rejectLater().then(
value => console.log(value),
error => console.error(error) // Выведет "Error: произошла ошибка"
);Цепочка промисов
Одной из ключевых возможностей .then() является создание цепочек промисов, где результат одного промиса передаётся в другой:
resolveLater()
.then(value => {
console.log(value); // "обещание выполнено"
return rejectLater();
})
.then(
value => console.log(value),
error => console.error(error) // "Error: произошла ошибка"
);Это позволяет строить сложные асинхронные цепочки, где каждый следующий шаг зависит от результата предыдущего.
Заключение
Метод .then() является мощным инструментом для работы с асинхронными операциями в JavaScript. Он позволяет обрабатывать результаты асинхронных операций удобным и читаемым способом, а также строить сложные цепочки асинхронных операций. Эффективное использование .then() может значительно упростить ваш код и сделать его более устойчивым к ошибкам.
Владение методом then() - это только начало пути в мир асинхронного JavaScript. Чтобы создавать сложные и эффективные приложения, необходимо понимать принципы работы Event Loop, уметь использовать async/await и другие инструменты асинхронности. Если вы хотите освоить все эти концепции на практике, рекомендуем вам курс JavaScript Advanced. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир продвинутого JavaScript прямо сегодня.
Постройте личный план изучения Javascript до уровня Middle — бесплатно!
Javascript — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Javascript
Лучшие курсы по теме

Основы JavaScript
Антон Ларичев
TypeScript с нуля
Антон Ларичев