⊗jsSpACInr 155 of 294 menu

Aszinkron kód callback-ekkel JavaScriptben

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

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

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

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

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

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

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

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