2013-07-31 9 views
72

dice sulla Node.js about page:Come posso ottenere un elenco di callback nella coda di lavoro del nodo? (O, Perché non il nodo di uscita?)

nodo esce dal ciclo evento quando non ci sono più callback da eseguire.

C'è un modo per scoprire quali callback impediscono l'uscita del nodo?

+2

questa è una bella domanda ... la stessa che ho iniziato a chiedere quando studio il ciclo degli eventi ... come faccio a vedere la coda? non sono sicuro del motivo per cui le persone voterebbero questo. ;) – tbarbe

risposta

79

È possibile utilizzare process._getActiveHandles() e process._getActiveRequests()

Vedi this discussion nella mailing list node.js.

aggiornamento: c'è un buon pacchetto per questo - https://github.com/mafintosh/why-is-node-running

+2

Grazie mille, questo è quello che stavo cercando. In precedenza su # Node.js su Freenode qualcuno stava cercando di ricordare queste chiamate e non ci sono riusciti: "" Interamente spaziate sul nome, è come "process._getOpenHandles()" o qualcosa di altrettanto difficile da ricordare "". Stavo cercando su Google cercando di trovare la chiamata vera e non potevo. Grazie ancora. –

+2

Non ricordo nemmeno i nomi - usato nodo repl, typed process._ + tab completion :) –

+0

Hah, non avevo pensato a REPL autocomplete, che ovviamente è il modo migliore per farlo. Avevo cercato in 'node_globals.js' e non l'ho trovato. Ora sto scaricando il codice codebase, sapendo cosa cercare e trovo che sono definiti in node.cc. process._getActiveHandles() è 'src/node.cc: 2345: NODE_SET_METHOD (processo," _getActiveHandles ", GetActiveHandles);' Hah! Eccellente. –

7

c'è un modulo NPM wtfnode per mostrare ciò che a mantenere il nodejs applicazione in esecuzione quando si manda SIGINT (Ctrl-C) ad esso.

L'interno utilizza process._getActiveHandles() come indicato nella risposta di @ andrey-sidrov. Il vantaggio dell'utilizzo di wtfnode è che fornisce un output di facile lettura.

Problemi correlati