2013-07-04 2 views
2

Я понимаю, что NodeJS работает до тех пор, пока все события не будут выведены из очереди событий, а затем он выйдет. В разных случаях я написал сценарий, в котором используются сторонние модули, и он делает то, что я хочу, но не выхожу. Я предполагаю, что это связано с тем, что некоторые из сторонних модулей имеют что-то в очереди событий.NodeJS понимает очередь событий

Есть ли что-нибудь, что я могу сделать, чтобы посмотреть очередь, поощрить ее к истощению или даже определить, кому еще есть чем заняться (и, возможно, получить достаточную информацию, чтобы знать, что если я все-таки обработать.exit, никакого вреда не будет сделано)

Спасибо за ваши предложения.

+1

«NodeJS работает до тех пор, пока все события не будут выведены из очереди событий, а затем он выйдет» - на самом деле? Итак, если вы создадите сайт с помощью Node, он будет закрыт, если его никто не посещает? Возможно, я не понимаю ваш вопрос. –

+0

взгляните на process._getActiveHandles() и process._getActiveRequests() (https://groups.google.com/d/msg/nodejs/ztspFn-BKgE/qw1I9VLSG_gJ) –

+0

@ PaulD.Waite, который действительно спасет ресурсы, 't ;-) Но серьезно - если у вас есть ссылка на «Обстоятельства, когда NodeJS будет/не удастся выйти», это было бы полезно. Я вижу в ответе ниже, по крайней мере, добавление SetInterval предотвратит останов приложения. – nwaltham

ответ

1

Без доступа к этим модулям вы не можете многое сделать.

SetInterval предотвратит ваше приложение остановки, но вы можете вызвать ClearInterval на этих таймерах. Ваша задача будет заключаться в том, чтобы управлять этими интервальными объектами и выполнять очистку, если приложение необходимо удалить.

Одним из хакерских и прямых решений было бы заменить метод SetInterval по умолчанию на заказ, который будет регистрировать интервал и действовать так же, как и по умолчанию, с точки зрения использования. Таким образом, вам будет легче собирать все интервальные ручки.

Смежные вопросы