⊗jsSpACInr 155 of 294 menu

Asynkron kode med callbacks i JavaScript

Lad os sige, at vi har en asynkron funktion:

function make() { setTimeout(function() { console.log('1'); }, 3000); }

Lad os sige, vi bruger denne funktion på følgende måde:

make(); console.log('2'); // vil udføres først

Lad os sige, vi ønsker at gøre sådan, at den anden konsoludskrift udføres efter at den asynkrone operation inden i funktionen er udført. En af de tilgange, der bruges til dette, er brugen af en callback: vi indkapsler koden, der venter, i en anonym funktion og sender den som en parameter til funktionen make:

make(function() { console.log('2'); });

Selvfølgelig løser dette ikke i sig selv vores opgave. Indtil videre har vi blot lavet følgende aftale: hvis du ønsker at udføre kode efter make udløses, så send denne kode som en callback til make kaldet.

Lad os rette koden for funktionen make, så den begynder at arbejde i overensstemmelse med vores aftale:

function make(callback) { setTimeout(function() { console.log('1'); // en eller anden asynkron operation, måske ikke kun én callback(); // derefter vores callback }, 3000); }

Forklar, i hvilken rækkefølge tallene vil blive vist i konsollen:

function make(callback) { setTimeout(function() { console.log('1'); callback(); }, 3000); } make(function() { console.log('2'); console.log('3'); });
nlenhupltr