Почему мы используем метод then () в JavaScript?
Метод 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}