如何从Node.js代码访问事件循环?

lag*_*lex 10 node.js

是否有可以从Node.js代码执行的本机函数,该代码输出一个数组或一个对象,其中包含有关当前应该在事件循环中的内容的信息?

the*_*eye 12

最近有人要求在io.js项目中查看事件循环中的内容.在这篇评论中,有两个函数名称浮出水面,

  1. process._getActiveHandles() 让你处理仍然活着的句柄

  2. process._getActiveRequests() 获取有关活动libuv请求的信息.

我想这是你从事件循环中收集到的最多的东西.

注意:它们都是未记录的函数,您不能在生产代码中依赖它们.


Ben*_*aum 9

你正在寻找一个uv_loop.

有一种UV_EXTERN void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg);方法可以调用迭代事件循环.

不幸的是,它并没有真正暴露给JavaScript - 所以除非你想为了好玩(和fork node/io.js)这样做,否则没有.

你可以将调用包装到事件循环并监视那些但速度很慢甚至没有关闭的实际循环 - 实际的循环不在JS领域,只有它的一小部分 - 甚至其中的一部分(如微任务队列)都在C++中.

很多人都认为事件循环就像一个数组 - 它实际上更像是:

在此输入图像描述

挂钩process.nextTick和定时器比上面提到的轮询部分容易得多.