2015-06-10 26 views
7

Có một chức năng có nguồn gốc có thể được thực hiện từ mã Node.js mà kết quả đầu ra một mảng hoặc một đối tượng có chứa các thông tin về những gì hiện đang nghĩa vụ phải được xuất hiện trong Event Vòng?Cách truy cập Vòng lặp sự kiện từ mã Node.js?

+0

tôi mong đợi câu trả lời là "không". Tại sao bạn lại muốn một thứ như vậy? –

Trả lời

8

Gần đây đã có a request để xem những gì là trong vòng lặp sự kiện, trong dự án io.js. Có hai tên các chức năng nổi lên, trong this comment,

  1. process._getActiveHandles() giúp bạn xử lý mà vẫn còn sống

  2. process._getActiveRequests() được thông tin mà bạn yêu cầu về libuv hoạt động.

Điều này nhiều nhất bạn có thể thu thập từ vòng lặp sự kiện, tôi đoán vậy.

Lưu ý: Cả hai đều là các hàm không có giấy tờ và bạn không thể dựa vào chúng trong mã sản xuất.

5

Bạn đang tìm kiếm một uv_loop.

Có phương thức UV_EXTERN void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg); bạn có thể gọi để lặp vòng lặp sự kiện.

Thật không may, nó không thực sự tiếp xúc với JavaScript - vì vậy trừ khi bạn muốn làm điều này cho vui (và nút ngã ba/io.js) thì không.

Bạn có thể bọc các cuộc gọi đến vòng lặp sự kiện và theo dõi những điều đó nhưng chậm và thậm chí không đóng - vòng lặp thực không nằm trong vùng đất JS, chỉ một phần nhỏ của nó - và thậm chí cả các phần của nó (như hàng đợi microtask) có trong C++.

Rất nhiều người nghĩ về vòng lặp sự kiện như một mảng - nó thực sự như hơn:

enter image description here

Đó là dễ dàng hơn nhiều để treo trên process.nextTick và giờ hơn trên một phần cuộc thăm dò nói trên.

Các vấn đề liên quan