Hogyan lehet megtudni a modulkód befejezéséről?

Itt például van példa egy aszinkron kódra a file test.js fájlban:

Ha a csomópont test.js. akkor a parancssor csak az aszinkronizálással fog megbirkózni, és csak 2 másodperc után tér vissza a parancsbeviteli módba.







Most még egy példa. A file some_module.js (elnézést kérek, hogy annyi kódot kaptam, és részletesen festettem az esetet):

Természetesen lehetőség van tulajdonítani a megfelelő helyen a funkció some_method visszahívási hogy átkerül test.js (valami hasonló self.end ()), akkor a probléma megoldódik (most csinálok). De ez nem elegáns megoldás a problémára, mert a self.end () megkétszerezi a visszatérési utasítás értelmét. Például, van néhány (some_module.js) modulja körülbelül ötven, és értesíteni a szülők script mindenhol kézzel nem felel meg nekem egyáltalán.

Ott jött az elégedetlenségem (a probléma részletesebb leírása, itt egyszerűbben leírtam). Az egyes weboldalak kódja különálló modul, és mindenhol, amit írni az njs.exit () - nem rendben.

Itt merül fel a kérdés: van-e olyan rendszer (vagy sem) a Node.JS modul, amely értesítést küldhet nekem, amikor a modulom kódfuttatása leállt.
Tudok a folyamatmodulról. de a kiszolgáló minden egyes kérésének folyamata nem a Node.JS stílusban van.

Hogyan lehet megtudni a modulkód befejezéséről?






Csomópont-felügyelő 0.11. Hálózati ellenőrzés elérhető!

Ha komolyan írsz ilyen PHP-t, akkor az én tanácsom, hogy olvassa el a vm modulot, hasznos lenne neked.

De őszintén megteremtette a problémát a semmiből, mert megváltoztatta a programozási nyelvet, de nem változtatta meg a gondolkodás ideológiáját.

A vm dokumentációjában nem találtam példákat aszinkron kód végrehajtására, sokkal kevésbé az események leírására.
Ami az ideológiát illeti, nem teljesen igaza van - nem próbálok php-szerű szervert létrehozni, az csak egy szerver modul. Van egy nagyon egyszerű vágyam - annak biztosítása érdekében, hogy a weboldalon található fájl ne írjon semmit, kivéve azokat a hívásokat, amelyekre csak ebben az esetben van szükség. Szóval eldobtam az összes csomagolóanyagot, ezért nem akarom felhalmozni a kódot visszahívásokkal. Személy szerint nagyon fáradt vagyok abban, hogy ugyanazt a kódot írja minden új fájlban.

Hogyan lehet megtudni a modulkód befejezéséről?

Használja az ígéreteket, megoldják ezt a problémát
Ha valamilyen metódus visszatér az Ígérethez, akkor ezt írhatja:


Nagyobb az es6-ra, és használhatjuk például a generátorokat:

Köszönöm. Megértem, hogy a minta az ígéret is előírja a visszahívás a végső kódot (modul kód), és én csak próbálja meg nélküle, hogy egyszerűsítse a végrehajtás a megszakítás.
Itt az ECMAScript 6-al, még nem ismerkedtem meg, szóval most megkérdezhetem a ostobaságot - hacsak a második példája nem szinkron.

Ön valahogy még mindig használja az izzókat, például ebben a példában, a setTimeout-ban. Egyszerűen ott meg kell adnia egy olyan eljárást, amely lehetővé teszi az ígéretét.

Az es6-ban a nyelvi konstrukciók lehetővé teszik az aszinkron kód szinkron stílusban történő írását. Lásd itt: habrahabr.ru/post/210330