Aszinkron kód callback-ekkel JavaScriptben

Tegyük fel, hogy van egy aszinkron funkciónk:

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

Tegyük fel, hogy a következőképpen használjuk ezt a funkciót:

javascriptmake();
console.log('2'); // ez fog először lefutni

Tegyük fel, hogy azt szeretnénk elérni, hogy a második konzol kiírás csak azután fusson le, miután a funkción belüli aszinkron művelet befejeződött. Az egyik ehhez használt megközelítés a callback használata: csomagoljuk a várakozó kódot egy anonim funkcióba és adjuk át paraméterként a make funkciónak:

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

Természetesen ez önmagában még nem oldja meg a problémánkat. Egyelőre csak egy megállapodást kötöttünk: ha kódot szeretnél futtatni a make lefutása után, add át ezt a kódot callback-ként a make hívásakor.

Módosítsuk a make funkció kódját úgy, hogy az kezdjen el a megállapodásnak megfelelően működni:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // valamilyen aszinkron művelet, lehet, hogy nem is egy
    callback();       // majd a mi callback-ünk
  }, 3000);
}
Задание 1

Mesélje el, milyen sorrendben jelennek meg a számok a konzolon:

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

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