Szinkron és aszinkron kérések

dec 22, 2021
admin

Egyes esetekben sok külső fájlt kell beolvasni. Ez egy szabványos függvény, amely a XMLHttpRequest objektumot aszinkron módon használja, hogy az olvasott fájl tartalmát egy megadott hallgatóra kapcsolja.

function xhrSuccess() { this.callback.apply(this, this.arguments);}function xhrError() { console.error(this.statusText);}function loadFile(url, callback /*, opt_arg1, opt_arg2, ... */) { var xhr = new XMLHttpRequest(); xhr.callback = callback; xhr.arguments = Array.prototype.slice.call(arguments, 2); xhr.onload = xhrSuccess; xhr.onerror = xhrError; xhr.open("GET", url, true); xhr.send(null);}

Használat:

function showMessage(message) { console.log(message + this.responseText);}loadFile("message.txt", showMessage, "New message!\n\n");

A loadFile segédfüggvény aláírása deklarálja (i) az olvasandó cél URL-címet (HTTP GET-kérésen keresztül), (ii) az XHR művelet sikeres befejezésekor végrehajtandó függvényt, és (iii) a további argumentumok tetszőleges listáját, amelyeket az XHR objektumon keresztül (a arguments tulajdonságon keresztül) a siker visszahívó függvénynek ad át.

Az 1. sor deklarálja az XHR művelet sikeres befejezésekor meghívott függvényt. Ez viszont meghívja a loadFile függvény meghívásában megadott visszahívási függvényt (ebben az esetben a showMessage függvényt), amelyet az XHR objektum egyik tulajdonságához rendeltünk (11. sor). A loadFile függvény meghívásához megadott további argumentumok (ha vannak) “alkalmazásra kerülnek” a callback függvény futtatásához.

Az 5. sor deklarálja azt a függvényt, amelyet akkor hívunk meg, ha az XHR művelet nem sikerül sikeresen befejezni.

A 11. sor az XHR objektum callback tulajdonságában tárolja a loadFile második argumentumaként megadott sikeres callback-et.

A 12. sor a loadFile meghívásához megadott argumentumtömböt szeleteli. A harmadik argumentummal kezdve az összes többi argumentumot összegyűjti, hozzárendeli a xhr változó arguments tulajdonságához, átadja a xhrSuccess. siker visszahívási függvénynek, és végül a xhrSuccess függvény által meghívott visszahívási függvénynek (ebben az esetben a showMessage) adja meg.

A 15. sor a harmadik paramétereként true-t ad meg annak jelzésére, hogy a kérést aszinkron módon kell kezelni.

A 16. sor ténylegesen elindítja a kérést.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.