Reputation: 34677
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
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,
process._getActiveHandles()
gets you handles that are still alive
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
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:
It's a lot easier to hook on process.nextTick
and the timers than on the poll part mentioned above.
Upvotes: 12