Asynkron kod med callbacks i JavaScript
Låt oss säga att vi har en asynkron funktion:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Låt oss säga att vi använder denna funktion på följande sätt:
make();
console.log('2'); // kommer att köras först
Låt oss säga att vi vill göra så att den andra
utskriften till konsolen utförs efter att
den asynkrona operationen
inuti funktionen har utförts.
Ett av tillvägagångssätten som används för detta
är att använda en callback:
vi lägger in koden som ska vänta i en anonym funktion
och skickar den som en parameter till funktionen make:
make(function() {
console.log('2');
});
Självklart löser inte detta vårt problem i sig.
För nu har vi bara kommit överens om följande: om du vill köra kod efter
att make har utförts, skicka in den koden
som en callback till anropet av make.
Låt oss rätta till koden för funktionen make så att
den börjar fungera i enlighet med vår
överenskommelse:
function make(callback) {
setTimeout(function() {
console.log('1'); // någon form av asynkron operation, kanske inte bara en
callback(); // sedan vår callback
}, 3000);
}
Berätta i vilken ordning siffrorna kommer att skrivas ut i konsolen:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});