¿Podría alguien ayudarme a entender cómo funciona esto?
Entiendo cómo funcionan las devoluciones de llamada, pero estaba viendo un video tutorial y me encontré con este fragmento de código:
function addAndHandle(n1, n2, cb) { const result = n1 + n2; cb(result); } addAndHandle(10, 20, function (results) { console.log(results); }); Mi pregunta en esto es, ¿cómo se calculan los results aquí en la devolución de llamada? En la declaración de la función, el result se pasa a la devolución de llamada, lo que tiene sentido porque la suma se almacena en el result . Sin embargo, luego estoy usando results , entonces, ¿cómo muestra eso la suma de 10 y 20 o lo que sea que sean n1 y n2 ?
Llamas a la función con los tres parámetros.
La función suma n1 y n2 y guarda el resultado en una variable
Luego le pasas ese Varbiable a la función.
Tal vez nombrar el parámetro diferente ayuda
function addAndHandle(n1, n2, cb) { const result = n1 + n2; cb(result); } addAndHandle(10, 20, function (p_nResult) { console.log(p_nResult); });Tal vez escribirlo así te ayudará a entender:
function addAndHandle(n1, n2, cb) { const result = n1 + n2; cb(result); } function foo(results) { console.log(results); } addAndHandle(10, 20,foo);Dentro de la función addAndHanle llamas a cb - estás llamando a foo, el resultado es igual a 30. Es lo mismo que llamar a foo con 30:
foo(30) Entonces, los resultados se calculan con const result = n1 + n2 , esto le da un valor que pasa a foo.
En su ejemplo, está utilizando la función anónima como callabck, pero la lógica es la misma. Todo lo que hice fue extraer su cb en una función separada para simplificarlo.
Creo que está confundido ya que el result y los results son los mismos en este ejemplo. Su result se pasa a su devolución de llamada ( function (results) {console.log(results);} ) como results
Estos son los valores con los que trabajas al final.
function addAndHandle(n1 /* 10 */, n2 /* 20 */, cb /* function (results) {console.log(results);} */) { const result = n1 + n2; /* 30 */ // This is just calling your callback function from below with the value of result eg. 30 cb(result /* 30 */); // in case your familiar with IIF (function (results) {console.log(results);})(result) addAndHandle(10, 20, function (results /* 30 */) { console.log(results /* 30 */); });