Node.jsでイベントループキューのタイマー数を判断する方法はありますか?私はいくつかの種類の内部簿記システムを使って、タイムアウトの数を持つライブラリを持っていて、V8やLibuvなど何かを尋ねることができればうれしいでしょう。Node.jsイベントループの(アクティブな)タイマーの数を取得
これは可能ですか?
Node.jsでイベントループキューのタイマー数を判断する方法はありますか?私はいくつかの種類の内部簿記システムを使って、タイムアウトの数を持つライブラリを持っていて、V8やLibuvなど何かを尋ねることができればうれしいでしょう。Node.jsイベントループの(アクティブな)タイマーの数を取得
これは可能ですか?
私はちょうどあなたが直接が libuv求めることはできませんV8またはLibuvまたは何
を求めることができるが、それは確かにアクティブなタイマーがありますどのように多くの知っている方法を提供する場合、それはいいだろう。
有効なループを使用してuv_walk
を呼び出して、アクティブなハンドルをすべて取得することができます。次に、指定されたコールバックで各ハンドルを確認し、データメンバtype
(タイプがuv_handle_type
)がUV_TIMER
に等しいものを数えます。
結果はアクティブタイマーの数です。
ハンドルデータ構造の詳細については、documentationを参照してください。それは次のように
struct Counter {
static int count;
static void callback(uv_handle_t* handle, void*) {
if(handle.type == uv_handle_type::UV_TIMER) count++;
}
};
は、あなたがそれを使用することができます:
は、簡単な例として、以下の構造を考慮もちろん
Counter::count = 0;
uv_walk(my_loop_ptr, &Counter::callback);
// Counter::count indicates how many active timers are running on the loop
、これは生産対応コードではありません。とにかく、それが提案された解決策のアイデアを与えることを願っています。
libuvのマニュアルについては、hereを参照してください。
カウンタを管理するラッパーを使用してsetTimeoutメソッドを上書きすると、あなたのニーズに合っていると思いますか? –
@DavidRissatoCruzでもうまくいくかもしれませんが、clearTimeoutも同様にmonkeypatchする必要があります –