Cómo devolver un valor desde una función de devolución de llamada asincrónica JS?

Aquí, vamos a aprender lo devoluciones de llamada están en JS , a continuación, pasar más rápidamente a asíncrona mirada JavaScript y class en cómo podemos finally un valor desde una función de devolución de llamada asincrónica ?

¿Cuáles son las devoluciones de llamada?

Literalmente, devoluciones de llamada pueden entenderse como llamar algo a cambio. En la programación, se utiliza una llamada a entender que estamos llamando a una función, así que cuál es devolución de llamada? Para decirlo simplemente, es una función llama a otro & nbsp;. Literalmente, devoluciones de llamada se pueden entender como llamar algo a cambio. En la programación, se utiliza una llamada a entender que estamos llamando a una función, así que cuál es devolución de llamada? Para decirlo simplemente, que es una función de llamar a otro . & Nbsp;

Ahora vamos a ver la definición más exacta de una devolución de llamada con un ejemplo.

una devolución de llamada es una función que se pasa a otra función como un parámetro y luego invoca por otras funciones . La función a la que se hace pasar a la devolución de llamada se refiere a menudo como una función de orden superior. Por el contrario, las funciones de orden superior operan en otras funciones, ya sea tomando como argumentos o devolviéndolos.

function higherOrder(callbackfn) {
console.log('invoked higher order! ');
callbackfn();
}
function callbackfn() {
console.log('invoked callback! ');
}
higherOrder(callbackfn);

salida

invoked higher order! 
invoked callback!

El ejemplo anterior muestra la versión más simple de devoluciones de llamada. Los nombres de las funciones son fáciles de entender y se puede entender cómo están trabajando. Ahora que tenemos un conocimiento básico de lo que son las devoluciones de llamada, podemos pasar a entender las funciones asíncronas con devoluciones de llamada.

Recordemos que las funciones asíncronas son aquellos que ejecutar después de un cierto intervalo de tiempo. No son ejecutados inmediatamente y mientras se están ejecutando en segundo plano que pueden tener algún otro código que se ejecuta de forma sincrónica. return ejemplo, una ruleta o un cargador que se ve en un sitio web que se ejecuta mientras se están alcanzando los datos a través de llamadas asincrónicas.

Ejemplo:

var timerID = setTimeout(function() {
console.log('Runs in 3s');
}, 3000);
setTimeout(function() {
console.log('cancelling first timeout', timerID);
const a = 10;
clearTimeout(timerID);
return a;
}, 2000);

salida

cancelling first timeout 175

vamos a entender lo que está pasando en el código de seguridad. Estamos funcionando con la primera función asíncrona en cuestión de segundos, pero antes de eso cancelamos esa función en dos segundos. Tiene sentido, pero ¿por qué no obtenemos el valor 10 de regresar de nuestra segunda función asíncrona? Sabemos que ejecuta ya que esta fue la función que canceló nuestra primera función asíncrona, por lo que sabemos que se ha ejecutado desde que es la primera línea a la última línea, ¿por qué no hemos llegado hasta 10 en la consola?

function run() {
const a = 10;
return a;
}
run();

salida

10

el código anterior muestra una función normal, que devuelve algún valor. Cuando tratamos de For el mismo valor desde una función de devolución de llamada asincrónica, simplemente no conseguimos nada . ¿Entonces cómo hacemos eso?

Promise

Una promesa es simplemente un objeto que representa una tarea que se completará en el futuro.

Un promesa es una forma de devolver los valores de las funciones de devolución de llamada asincrónica. Para entender la promesa en términos más simples se puede imaginar como un ser token dado en una oficina del gobierno para conseguir algo de ayuda sobre un problema determinado. Ese símbolo representa que usted será llamado en algún momento posterior, y el problema se resolverá. Esa manera, analógicamente, es una promesa. La ayuda que recibe de la oficina es la invocación de su devolución de llamada.

var p = new Promise(function(resolve, reject) {
resolve(10);
});
undefined
p.then(function(a) {
console.log('Promise p resolved with data: ', a);
})

salida

VM2636:2 Promise p resolved with data:  10
Promise {<resolved>: undefined}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: undefined

Regresamos valor de una función de devolución de llamada asincrónica utilizando una promesa!

Veamos otro ejemplo:

var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
var randomNo = Math.floor(Math.random() * 10);
resolve(randomNo);
}, 3000);
});
promise.then(function(data) {
console.log('resolved! ', data);
});

salida

resolved!  0
Promise {<resolved>: undefined}

Creamos un nuevo promesa , un objeto que va a ser de regresar de nuestra devolución de llamada utilizando la nueva función () promesa. Invocamos una función .then () en nuestro objeto promesa que es una función asíncrona y pasa nuestra devolución de llamada a esa función. Esa función de devolución de llamada toma en dos parámetros, una determinación y un rechazo. Si nuestro código se ejecuta con éxito obtenemos el resultado resuelta y si hay un error obtenemos un rechazan. Las promesas son una gran manera de valores return desde una función de devolución de llamada asincrónica. Además también puede encadenar múltiples .then () funciones a una promesa y evitar sucio, difícil de leer devoluciones de llamada asincrónicos anidados. Son ampliamente utilizados en la actualidad a través de varias bibliotecas promesa.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *