Asinhrona koda s povratnimi klici v JavaScript

Recimo, da imamo neko asinhrono funkcijo:

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

Recimo, da to funkcijo uporabimo na naslednji način:

javascriptmake();
console.log('2'); // se bo izvedel prvi

Recimo, da želimo narediti tako, da se drugi izpis v konzolo izvede šele po tem, ko se izvede asinhrona operacija znotraj funkcije. En od pristopov, ki se uporablja za to, je uporaba povratnega klica: ovijmo kodo, ki čaka, v anonimno funkcijo in jo posredujemo kot parameter funkciji make:

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

Seveda samo po sebi to ne bo rešilo naše naloge. Za zdaj smo samo sklenili naslednje dogovor: če želite izvesti kodo po zagonu make, posredujte to kodo kot povratni klic v klic make.

Popravimo kodo funkcije make tako, da bo začela delovati v skladu z našim dogovorom:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // neka asinhrona operacija, morda ne ena sama
    callback();       // nato naš povratni klic
  }, 3000);
}
Задание 1

Povejte, v kakšnem vrstnem redu se bodo izpisale številke v konzolo:

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

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