como se muestra a continuación, se proporcionó una función asíncrona para un parámetro donde se esperaba una función no asíncrona, pero funcionó, ¿por qué?
function getCallback(param, callback) { setTimeout(() => { callback && callback(param); }, 1); } getCallback(13, async (param) => { console.log(param); }); --- 13Funcionó, ¿por qué?
Porque una función async es solo una función que devuelve una promesa y se puede llamar como cualquier otra función. Su getCallback ignora el valor de retorno de callback() , por lo que no importa lo que devuelva.
¿Está bien pasar la función
asyncdonde no se necesita ninguna funciónasync?
No, generalmente no está bien pasar una función async (u otra función que devuelve una promesa) a una función que no espera que la devolución de llamada devuelva una promesa. Las promesas no deben ignorarse, deben .then() await o esperarse, y necesitan un manejo especial de errores. Si getCallback no maneja los errores (promesa), no debe pasar una devolución de llamada que tenga errores.