Az aszinkron alkalmazások létrehozásának alapjai

Az aszinkron kód alapvető leírása

Várható, hogy a konzolban "a", "b", majd kb. 500 ms - "c", "d" és "e" után fogunk látni. A "körülbelül" kifejezést használom, mert valójában a setTimeout kiszámíthatatlanul működik. Még a HTML5 specifikációban is: "Így az API nem garantálja, hogy az időzítő pontosan a megadott ütemezés szerint teljesül, a processzorterhelés, más feladatok és más tényezők valószínűsége valószínűleg késedelmet szenved."

Érdekes módon az időtúllépés csak akkor történik, ha a blokk összes fennmaradó kódja megtörténik. Ez azt jelenti, hogy ha időtúllépés van beállítva, és bármelyik funkció hosszú ideig végrehajtásra kerül, az időzítés nem indul el addig, amíg a funkció befejeződik. A valóságban a setTimeout és a setInterval aszinkron függvények várakoznak, az eseményhurok néven ismert.

Asynchronous data retrieval a jQuery módszerrel $ .ajax egy egyszerű cross-browser eljárás, amely elrejti az igazi folyamatot. Például:

Általában, de helytelenül feltételezzük, hogy az adatok a $ .ajax hívása után azonnal elérhetők lesznek. De a valóság másképp néz ki:

Az XmlHttpRequest (xmlhttp) objektum elküldi a kérelmet, és a visszatérési függvény kezeli az readystatechange objektum eseményét. Az Xmlhttp ezután végrehajtja a küldés módját. Ahogy az xmlhttp működik, az readystatechange-esemény minden egyes alkalommal, amikor a readyState tulajdonság megváltozik. és csak akkor, ha az xmlhttp befejezi a távoli gép fogadását, a visszatérési függvény végrehajtódik.

Az aszinkron kóddal dolgozik

A node.js számos funkciója aszinkron. Ezért gyakran talál hasonló helyzetet:

És a kliens oldalon megtalálja ezt a kódot:

A beágyazott visszatérési funkciók tényleg undorodhatnak. De számos megoldás létezik ehhez a kódolási stílushoz. A probléma nem a programnyelv, hanem a programozói által használt.

Nevezett funkciók

Egyszerű megoldás a visszatérési funkciók eltömődésének elhárítására, hogy elkerüljék a két szint mélyebb megteremtését. Ahelyett, hogy egy névtelen függvényt a visszatérési függvény argumentumához továbbítanánk, használjunk egy megnevezett függvényt:

Ezenkívül az async.js könyvtár segíthet több AJAX kérés / válasz kezelésében. Például:

Ez a kód két aszinkron funkciót hajt végre, és mindegyik funkció "kész" visszatérési funkcióval rendelkezik, amelyet az aszinkron funkció befejezése után hajt végre. Ha mindkét visszatérési funkció befejeződött, a párhuzamos visszatérési függvény végrehajtásra kerül mindkét aszinkron funkció hibáinak vagy eredményeinek kezelésére.

Promise (ígéret)

Az ígéret egy olyan eseményeseményt képvisel, amelyet egyetlen művelet befejezésekor kapunk.

Sok olyan könyvtár van, amelyek ígéreteket mutatnak. A jQuery kiváló ígéretes API-t használ. A Halasztott objektum megjelenik az 1.5 verzióban, és a jQuery.Deferred konstruktort olyan funkciókban használják, amelyek ígéreteket adnak vissza. Az ígéretekkel ellátott függvények valamilyen aszinkron műveletet hajtanak végre.

Itt két aszinkronfunkció engedélyezett, eredményeik várhatóak, majd egy másik funkciót hajtanak végre az első két hívás eredményével.

Ebben a kódban a geocode-módszer kétszer kerül végrehajtásra, és ígéretet ad vissza. Az aszinkron funkció ezután végrehajtódik és megoldódik a visszatérési függvényében. Aztán, amint mindkét megoldás megoldódik. elvégzett majd. Az első két geocode hívás eredményét adja vissza. Az eredmények átkerülnek a getRoute-ra. aki szintén visszatér az ígérethez. Végül, amikor a getRoute ígérete megszűnik, a doSomethingCoolWithDirections return function végrehajtódik.

Az események egy másik megoldás a kommunikációra, amikor az aszinkron visszatérési funkciók befejezik a végrehajtást. Egy objektum kibocsátóvá válhat, és olyan eseményt hozhat létre, amely elkapja a másik objektumot. Ezt az eseménytípusú munkát megfigyelő mintának nevezik. A backbone.js könyvtár ilyen funkciókat használ a Backbone.Events segítségével.

Vannak más könyvtárak is, amelyek ezt a munkamodellt használják az eseményekkel, például a jQuery Event Emitterrel. EventEmitter. A monologue.js és a node.js rendelkezik az EventEmitter modulral.

Soha ne térjen vissza ígéreteket nyilvános API-kon keresztül. Ez a gyakorlat arra kötelezi az API-felhasználókat, hogy ígérjenek és bonyolítsák a kódfrissítéseket. Az ígéretek kombinációja a belső igényekhez és eseményekhez külső API-khoz azonban kiváló szétválasztott és könnyen karbantartható alkalmazás megjelenéséhez vezethet.

Ez a megközelítés lehetővé teszi más alkalmazási területek számára, hogy válaszoljanak az aszinkron visszatérési funkciókra anélkül, hogy közvetlenül hivatkoznának arra a tárgyra, amely a kérést generálja. amely lehetővé teszi az oldal több oldalának frissítését, amikor irányba jut. A normál jQuery Ajax konfigurációban az n = irány megváltoztatásához sikeres inverz funkcióhívás szükséges. Ezt a megközelítést nehéz fenntartani, és az üzenetek használata megkönnyíti a felhasználói felület több területének frissítését.

A sablon és a közvetítő egyéb implementációi a könyvtárakban felerősödnek. PubSubJS és radio.js.

következtetés

Az aszinkron alkalmazások létrehozásának alapjai

Az információk azonnali megszerzésére két csatorna (látás és hallás) révén a tanítás hatékonysága sokkal nagyobb, mint a könyvek tanulása. És a házi feladatok és az online tesztek lehetővé teszik, hogy folyamatosan gondolkodj a tanult nyelvben, és azonnal ellenőrizd a tudását!

Az aszinkron alkalmazások létrehozásának alapjai

Az aszinkron alkalmazások létrehozásának alapjai

Ha sokáig szeretné megtanulni a HTML-t, akkor remek hírekkel szolgálok neked!

Az aszinkron alkalmazások létrehozásának alapjai

Ha már megtanulta a HTML-t, és tovább akar lépni, a következő lépés a CSS-technológia megtanulása.

Az aszinkron alkalmazások létrehozásának alapjai

Ha azt szeretnénk, hogy megértsék a fogalmak domain és tárhely, megtanulják, hogyan kell létrehozni egy adatbázist, feltölteni a fájlokat a honlapon keresztül FTP szerver, hozzon létre aldomain konfigurálja a postaládákat a helyszínen, és ellenőrzi a részvétel, a tanfolyam kifejezetten az Ön számára!