Los callbacks son el nombre de una convención para usar funciones que usan como parametro otras funciones en JavaScript.
Ejemplo explicado paso a paso.
functionfuncion1(){
console.log("mensaje1")
}
functionfuncion2(){
console.log("mensaje2")
}
funcion1();
funcion2();
En este codigo vemos dos funciones: cada una es independiente, y si las mandamos a imprimir, a simple vista sabemos que la consola imprimirá:
mensaje1
mensaje2
functionfuncion1(){
setTimeOut (function(){
console.log("mensaje1")
},1000);
}
functionfuncion2(){
console.log("mensaje2")
}
funcion1();
funcion2();
Si a la funcion1 le agregamos la funcion asincrona setTimeOut, vamos a demorar la ejecucion de esta en 1 seg (por lo que llevara la ejecucion al callstack queue, que hasta que el callstack no este desocupado no se ejecuua), con esto dicho la consola imprimira:
mensaje2
mensaje1
functionfuncion1(callback){ // agregamos como parametro el callback
setTimeOut (function(){
console.log("mensaje1")
callback(); // funcion que se ejecuta
},1000);
}
functionfuncion2(){
console.log("mensaje2")
}
funcion1(funcion2);
/*
Consola:
mensaje1
mensaje2
*/
Aqui el poder del callback:
Queremos que a pesar del setTimeOut se imprima en consola mensaje1 de primeras y despues el segundo. Se hace con callback.
En esta oportunidad se va a pasar de ejecutar 2 a 1 funcion, y es por que le pasamos un funcion como parametro de otra , para ello a la funcion le agregamos como parametro la palabra callback (que despues se transformara en la funcion2 por asignacion). y dentro de la funcion setTimeOut hacemos qye el callback se ejecute (que luego sera la funcion2 quien se ejecute)
Piensa ahora que funcion2 es imprimir de un objeto que no existe un informacion, y que funcion1 es ir a pedir a una API la informacion que se necesita, pero al no ser inmediato, se necesita poner el setTimeOut, o algo por el estilo.
Esto lo entendi del siguiente video.
https://www.youtube.com/watch?v=DaXuPcdKqQ4