Почему мы используем метод then () в JavaScript?

Опубликовано: 9 Декабря, 2021

Метод then () в JavaScript был определен в Promise API и используется для решения асинхронных задач, таких как вызов API. Раньше вместо этой функции использовались функции обратного вызова, что затрудняло сопровождение кода.

Синтаксис:

 demo (). затем (
    (onResolved) => {
        // Некоторая задача при успехе
    },
    (onRejected) => {
        // Некоторая задача при неудаче
    }
)

Примечание: demo - это функция, которая возвращает прототип обещания.

Параметры: эта функция имеет два параметра для обработки успеха или отклонения обещания:

  • onFulfilled: это функция, которая вызывается при успешном выполнении обещания. Это необязательный параметр.
  • onRejected: это функция, которая вызывается при отклонении обещания. Это необязательный параметр.

Возвращаемое значение: этот метод может либо возвращать Promise (если в дальнейшем вызывается другой then ()), либо ничего.

Пример 1: без аргументов

Выход:

 Функция называется !!

Пример 2: Передача только первого обратного вызова

JavaScript

<script type= "text/javascript" >
function demo() {
document.write( "Function called!!<br>" )
return Promise.resolve( "Success" );
// or
// return Promise.reject("Failure");
}
demo().then(
(message) => {
document.write( "Then success:" + message);
}
)
</script>

Выход:

 Функция называется !!
Тогда успех: Успех

Обратите внимание, что если демонстрационная функция возвращает отклонение, она сгенерирует ошибку.

Пример 3: Передача обоих аргументов

JavaScript

<script type= "text/javascript" >
function demo() {
document.write( "Function called!!<br>" )
return Promise.resolve( "Success" );
// or
// return Promise.reject("Failure");
}
demo().then(
(message) => {
document.write( "Then success:" + message);
},
(message) => {
document.write( "Then failure:" + message);
}
)
</script>

Выход:

 Функция называется !!
Тогда успех: Успех

Пример 4: Объединение нескольких методов then (): каждый then () может возвращать обещание (решение или отклонение), поэтому несколько методов then () могут быть объединены в цепочку.

JavaScript

<script type= "text/javascript" >
function demo() {
document.write( "Function called!!<br>" )
return Promise.resolve(1);
// or
// return Promise.reject("Failure");
}
demo().then(
(value) => {
document.write(value);
return ++value;
},
(message) => {
document.write(message);
}
).then(
(value) => {
document.write(value);
},
(message) => {
document.write(message);
}
)
</script>

Выход:

 Функция называется !!
12

Пример 5: Использование then () как асинхронной функции

JavaScript

<script type= "text/javascript" >
var demo = new Promise((resolve, reject) => {
resolve(1);
})
let call = demo.then(
(value) => {
console.log(value);
return ++value;
},
(message) => {
document.write(message);
});
console.log(call);
setTimeout(() => {
console.log(call);
});
</script>

Консольный вывод:

 Обещание {статус: "ожидает рассмотрения"}
1
Обещание {статус: "решено", результат: 2}