Código asíncrono con callbacks en JavaScript
Supongamos que tenemos una función asíncrona:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Supongamos que usamos esta función de la siguiente manera:
make();
console.log('2'); // se ejecutará primero
Supongamos que queremos hacer que la segunda
impresión en la consola se ejecute después de que
se complete la operación asíncrona
dentro de la función.
Uno de los enfoques utilizados para esto
es el uso de callbacks:
envolvamos el código pendiente en una función anónima
y la pasamos como parámetro a la función make:
make(function() {
console.log('2');
});
Por supuesto, esto por sí solo no resolverá nuestra
tarea. Por ahora solo hemos establecido el siguiente
acuerdo: si desea ejecutar código después
de que se active make, pase este código
como callback en la llamada a make.
Corrijamos el código de la función make para
que comience a funcionar de acuerdo con nuestro
acuerdo:
function make(callback) {
setTimeout(function() {
console.log('1'); // alguna operación asíncrona, puede ser más de una
callback(); // luego nuestro callback
}, 3000);
}
Explique en qué orden se mostrarán los números en la consola:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});