Hanging Up On Callbacks: Generators in ECMAScript 6
Előadás arról, hogy ES6 generátorok hogyan használhatóak egymásba ágyazott callbackek helyett
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
Szerver
Alapvetően más a helyzet egy szerveren, ahol tipikusan egy kérésre azonnal kell válaszolni, és nagyjából lényegtelen információ, hogy az I/O mennyi idő alatt fut le, mert mindenképp – még a kérésen belül – szükség van az eredményre.
A PHP nagy valószínűséggel belül pontosan ugyanúgy működik, mint a node.js, azaz eseményvezérelt, de elrejtik egy "dobozban", és csak a script futásának a végén kapjuk vissza a legenerált tartalmat. Ott is biztosan vannak callback-ek, csak nem látjuk őket.
Egy ugyanilyen dobozt kéne írni a V8 elé, elnevezni jobb.js-nek, és el lehetne felejteni a callback-ekkel, fiberekkel és generátorokkal való bohóckodást.
Webszerver
A PHP teljesen másképp működik, mint a Node.js. Ott van egy webszerver, ami vezérli a kiszolgálást. Ez lehet Apache HTTPd, vagy Nginx stb. Az a webszerver minden egyes bejövő kérésnek indít egy PHP szálat, és utána a PHP egyetlen szálon folyamatosan blokkolva fut le. Azaz 100 konkurens kérés kiszolgálására több 100MB memória is elfolyhat. Node.js esetén egyetlen programszál van, ami, amennyiben HTTP szervert írunk, szolgálja ki a kéréseket pár MB memóriát foglalva.
Nem feltétlenül webszerverre
A node.js 2009-es kiadása óta öt év telt el, mire találtak egy kényszerű megoldást arra a problémára, ami abból következik, hogy a V8-at böngészőben való futtatásra találták ki, nem szerverkörnyezetre.
Érdekes módon ez a
A callback meg általában együtt jár az event-driven programminggal, nem a V8 sajátja.
Egy átlagos website-nak
Másrészt ez választás elé állítja a node.js csomagok (npm) készítőit:
1, meghagyják a callback-eket, így viszont hosszú távon várható, hogy egyre kevesebben fogják karbantartani őket, mert a programozók számára fontos a kényelem,
2, újraírják a csomagot, ami elég nagy meló lehet.
JavaScript
Valószínűleg, akinek nem tetszik a JavaScript, akkor nem fog Node.js-t használni, elvégre az JavaScript-re épül, hanem használ helyette Java-t, Python-t, vagy Ruby-t.
Nekem például kifejezetten tetszik az eseményvezérelt programozás, és ahogy látom, azért vannak még rajtam kívül pár ezren. Ez egyébként segít a kód szervezésében is, mert az egyes működéseket önálló, kis függvényekbe, metódusokba csomagolja, ami javítja az egyes részfolyamatok átláthatóságát.
Akkor gondolom, hogy te nem
Nem zavar