laggingreflex
laggingreflex

Reputation: 34677

How to access the Event Loop from Node.js code?

Is there a native function that can be executed from Node.js code which outputs an array or an object containing the information about what's currently supposed to be in the Event Loop?

Upvotes: 12

Views: 1788

Answers (2)

thefourtheye
thefourtheye

Reputation: 239653

Recently there was a request to see what is in the event loop, in io.js project. There were two names of functions surfaced, in this comment,

  1. process._getActiveHandles() gets you handles that are still alive

  2. process._getActiveRequests() gets you info about active libuv requests.

This the most you can collect from the event loop, I guess.

Note: Both of them are undocumented functions and you cannot rely on them in production code.

Upvotes: 13

Benjamin Gruenbaum
Benjamin Gruenbaum

Reputation: 276536

You're looking for a uv_loop.

There's a UV_EXTERN void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg); method you can call to iterate the event loop.

Unfortunately, it's not really exposed to JavaScript - so unless you want to do this for fun (and fork node/io.js) then no.

You can wrap calls to the event loop and monitor those but that's slow and not even close - the actual loop isn't in JS land, only small parts of it - and even parts of that (like the microtask queue) are in C++.

A lot of people think of the event loop like an array - it's actually more like:

enter image description here

It's a lot easier to hook on process.nextTick and the timers than on the poll part mentioned above.

Upvotes: 12

Related Questions