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

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

最近有一个请求 ,在io.js项目中查看事件循环中的内容。 有两个名字的function浮出水面,在这个评论中 ,

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

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

我猜,这是你从事件循环中收集到的最多的东西。

注意:它们都是未公开的函数,在生产代码中不能依赖它们。

你正在寻找一个uv_loop

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

不幸的是,它没有真正暴露于JavaScript – 所以除非你想这样做的乐趣(和fork节点/ io.js),否则。

您可以将调用包装到事件循环中,并监控那些,但是这样做很慢,甚至没有closures – 实际循环不在JS领域,只有很小的部分 – 甚至是部分(如微任务队列)都在C ++中。

很多人认为事件循环像一个数组 – 事实上更像是:

在这里输入图像描述

process.nextTick和定时器上挂钩比在上面提到的poll部分要容易得多。