【问题标题】:How to access the Event Loop from Node.js code?如何从 Node.js 代码访问事件循环?
【发布时间】:2015-06-10 21:32:45
【问题描述】:

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

【问题讨论】:

  • 我希望答案是“否”。你为什么想要这样的东西?

标签: node.js


【解决方案1】:

最近有a request 在io.js 项目中查看事件循环中的内容。有两个函数名浮出水面,在this comment

  1. process._getActiveHandles() 获取仍然存在的句柄

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

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

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

【讨论】:

    【解决方案2】:

    您正在寻找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 和计时器比连接上面提到的投票部分要容易得多。

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 2014-01-22
      • 1970-01-01
      相关资源
      最近更新 更多