Asynkron kode med callbacks i JavaScript
La oss si at vi har en asynkron funksjon:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
La oss si at vi bruker denne funksjonen på følgende måte:
make();
console.log('2'); // vil utføres først
La oss si at vi ønsker å gjøre slik at den andre
utskriften til konsollen utføres etter at
den asynkrone operasjonen
inne i funksjonen er fullført.
En av tilnærmingene som brukes for dette,
er bruk av callback:
la oss pakke koden som venter i en anonym funksjon
og sende den som en parameter til funksjonen make:
make(function() {
console.log('2');
});
Selvfølgelig vil ikke dette alene løse
oppgaven vår. Foreløpig har vi bare inngått følgende
avtale: hvis du ønsker å utføre kode etter
at make utløses, send denne koden
som en callback til kallet av make.
La oss rette koden til funksjonen make slik at
den begynner å fungere i henhold til vår
avtale:
function make(callback) {
setTimeout(function() {
console.log('1'); // en eller annen asynkron operasjon, kanskje ikke bare én
callback(); // deretter vår callback
}, 3000);
}
Fortell i hvilken rekkefølge tallene vil vises i konsollen:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});