Cum să aflați despre finalizarea codului modulului în

Aici, de exemplu, avem un exemplu de cod asincron în fișierul test.js:

Dacă îl executați ca nod test.js. atunci linia de comandă va face față asincroniei și va reveni la modul de intrare a comenzii numai după 2 secunde.







Acum un alt exemplu. Fișierul some_module.js (Îmi cer scuze pentru că am atâtea coduri, încercând să pictez cazul în detaliu):

Desigur, este posibil să se atribuie locurile potrivite în funcția some_method un apel invers, care va fi transferat de la test.js (ceva de genul self.end ()), atunci problema este rezolvata (acum fac). Dar aceasta nu este o soluție elegantă pentru problemă, deoarece self.end () va duplica semnificația declarației de returnare. De exemplu, am aceste (some_module.js) module despre cincizeci și notifică script-ul părinte manual peste tot nu mi se potrivește.

De acolo a venit nemulțumirea mea (există o descriere mai detaliată a problemei, aici am descris-o mai simplu). Codul pentru fiecare pagină web este un modul separat pentru mine, și peste tot scriu njs.exit () - nu este ok.

Aici apare întrebarea - există vreun sistem (sau nu) Node.JS care mă poate notifica când sa oprit executarea codului modulului meu.
Știu despre modulul de proces. dar procesul pentru fiecare cerere către server nu este în stilul Node.JS.

Cum să aflați despre finalizarea codului modulului în






Nod Inspector 0.11. Rețeaua de inspecție disponibilă!

Dacă sunteți serios de gând să scrieți un astfel de PHP, atunci sfatul meu pentru tine este să citiți despre modulul vm, ar fi util pentru dvs.

Dar sincer ați creat o problemă de la zero, pentru că ați schimbat limba de programare, dar nu ați schimbat ideologia gândirii.

Nu am găsit în documentația pentru vm chiar exemple de executare a codului asincron, cu atât mai puțin descriu evenimentele.
În ceea ce privește ideologia, nu aveți dreptate - nu încerc să fac un server php, njs este doar un modul de server. Am o dorință foarte simplă - să vă asigur că fișierul cu pagina web nu are nevoie să scrie nimic, cu excepția apelurilor care sunt necesare doar în acest caz. Așa că am aruncat toate împachetările, așa că nu vreau să adun codul scriind apeluri. Personal, sunt foarte obosit să scriu același cod în fiecare fișier nou.

Cum să aflați despre finalizarea codului modulului în

Folosiți promisiuni, rezolvă această problemă
Dacă some_method returnează Promise, atunci puteți scrie:


Puteți merge mai adânc în es6 și utilizați, de exemplu, generatoare:

Mulțumesc. Înțeleg că modelul de promisiune încă necesită introducerea apelurilor în codul final (modulul de cod) și încerc doar să fac fără el, pe cât posibil simplificând întreruperea executării.
Aici, cu ECMAScript 6, nu am ajuns încă la cunoștință, așa că acum pot să ceri stupiditate - dacă cel de-al doilea exemplu nu este sincron?

Cu toate acestea, utilizați în continuare becurile, în acest exemplu, de exemplu, în setTimeout. Pur și simplu, va trebui să adăugați o metodă care vă permite promisiunea.

În es6, constructele de limbaj vă permit să scrieți cod asincron într-un stil sincron. Puteți vedea aici habrahabr.ru/post/210330







Trimiteți-le prietenilor: