Asynkron kod med callbacks i JavaScript

Låt oss säga att vi har en asynkron funktion:

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

Låt oss säga att vi använder denna funktion på följande sätt:

javascriptmake();
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:

javascriptmake(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:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // någon form av asynkron operation, kanske inte bara en
    callback();       // sedan vår callback
  }, 3000);
}
Задание 1

Berätta i vilken ordning siffrorna kommer att skrivas ut i konsolen:

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

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