Дмитрий Нечаев
Метод then() в JavaScript
В JavaScript для работы с асинхронными операциями часто используются промисы. Промис — это объект, который представляет собой завершение или неудачу асинхронной операции и её результат. Метод .then()
является частью прототипа Promise и используется для планирования работы с успешным или ошибочным исходом промиса.
Основы метода .then()
Метод .then()
принимает два аргумента: функцию для обработки успешного исхода и функцию для обработки ошибки. Важно понимать, что метод .then()
всегда возвращает новый промис, что позволяет строить цепочки промисов.
Синтаксис
promise.then(onFulfilled, onRejected);
onFulfilled
— функция, которая будет вызвана, если промис исполнится успешно. Эта функция имеет один аргумент, значение, с которым промис был выполнен.onRejected
— функция, которая будет вызвана, если промис завершится с ошибкой. Этот параметр необязательный.
Пример использования
Допустим, у нас есть функция, которая возвращает промис, разрешающийся с некоторым значением после 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()
может значительно упростить ваш код и сделать его более устойчивым к ошибкам.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile