Lo siento si ya hay otra pregunta sobre este tema. No pude encontrar uno.
¿Alguien podría explicar cómo funciona este código?
No esperaba que el result de foo() estuviera disponible dentro de la declaración de callback de llamada que se pasa como parámetro de foo .
¿Cuál es el orden de los acontecimientos que suceden en una situación como esta?
¿Es como si la función regresara primero y solo entonces crea su propio parámetro? ¿Cómo eso tiene sentido?
const foo = (callback) => { setTimeout(callback,500); return 42; }; const result = foo(() => { console.log('From callback...'); console.log('result:',result); })Similar a ésto:
const id = setTimeout(() => console.log('id',id),500);En primer lugar, se ejecuta foo , lo que establece que la devolución de llamada se ejecute después de 500 ms, y luego regresa con 42. Eso se almacena en la variable de result .
Después de 500 ms, se llama a la devolución de llamada del parámetro foo y encuentra el result de la variable como una variable global y lo imprime (que está configurado para ser 42)