Aquí, una promesa es un objeto devuelto por una función asíncrona, a la que se pueden agregar métodos de devolución de llamada en función del resultado de la función anterior. Se realiza para la ejecución consecutiva de funciones que actúan como una cola o string de funciones. Entonces, como las funciones están en la cola, las funciones que le siguen deben esperar el resultado de la función anterior. Para hacerlo, hay dos formas populares que se describen a continuación.
Uso de la función setTimeout(): para esperar a que finalice una promesa antes de devolver la variable, la función se puede configurar con setTimeout(), de modo que la función espere unos pocos milisegundos.
El siguiente programa ilustrará el enfoque:
Programa:
<script> const wait=ms=>new Promise(resolve => setTimeout(resolve, ms)); function failureCallback(){ console.log("This is failure callback"); } wait(4*1000).then(() => { console.log("waited for 4 seconds"); throw new Error("error occurred"); }).catch(() => { failureCallback(); }); wait(2*1000).then(() => console.log("waited for 2 seconds")); </script>
Producción:
waited for 2 seconds waited for 4 seconds This is failure callback
Uso de la función async o await(): este método se puede usar si no se puede especificar el tiempo exacto requerido en setTimeout(). La palabra clave async se usa para crear una función asíncrona que devuelve una promesa que se rechaza o se resuelve. La promesa se rechaza cuando se lanza una excepción no detectada desde esa función o se resuelve de otra manera. La palabra clave await se usa dentro de una función asíncrona para pausar su ejecución y esperar la promesa.
El siguiente programa ilustrará el enfoque:
programa:
<script> //This function returns promise after 2 seconds var first_function = function() { console.log("Entered first function"); return new Promise(resolve => { setTimeout(function() { resolve("\t\t This is first promise"); console.log("Returned first promise"); }, 2000); }); }; //This function executes returns promise after 4 seconds var second_function = function() { console.log("Entered second function"); return new Promise(resolve => { setTimeout(function() { resolve("\t\t This is second promise"); console.log("Returned second promise"); }, 4000); }); }; var async_function = async function() { console.log('async function called'); const first_promise= await first_function(); console.log("After awaiting for 2 seconds," + "the promise returned from first function is:"); console.log(first_promise); const second_promise= await second_function(); console.log("After awaiting for 4 seconds, the" + "promise returned from second function is:"); console.log(second_promise); } async_function(); </script>
Producción :
async function called Entered first function Returned first promise After awaiting for 2 seconds, the promise returned from first function is: This is first promise Entered second function Returned second promise After awaiting for 4 seconds, the promise returned from second function is: This is second promise
Publicación traducida automáticamente
Artículo escrito por sathiyajith19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA