Welcome to Node.js v18.17.1.
Type ".help" for more information.
> console.log(process.getActiveResourcesInfo())
[ 'TTYWrap', 'TTYWrap', 'TTYWrap' ]
> setTimeout(() => {}, 10000)
> console.log(process.getActiveResourcesInfo())
[ 'TTYWrap', 'TTYWrap', 'TTYWrap', 'Timeout' ]
setTimeout を登録すると Timeout が追加された
setTimeout を複数登録すると 配列の中の Timeout が複数になる
残ってる非同期処理の数がわかるのでどれくらい負荷があるかの参考にできる
console.log(0, process.getActiveResourcesInfo())
console.log(1, process.getActiveResourcesInfo())
setTimeout(() => {}, 100)
console.log(2, process.getActiveResourcesInfo())
const timeout = setTimeout(() => {}, 100)
console.log(3, process.getActiveResourcesInfo())
timeout.unref()
console.log(4, process.getActiveResourcesInfo())
require("fs/promises").readFile(__filename)
console.log(5, process.getActiveResourcesInfo())
0 []
1 [ 'TTYWrap', 'TTYWrap' ]
2 [ 'TTYWrap', 'TTYWrap', 'Timeout' ]
3 [ 'TTYWrap', 'TTYWrap', 'Timeout', 'Timeout' ]
4 [ 'TTYWrap', 'TTYWrap', 'Timeout' ]
5 [ 'FSReqPromise', 'TTYWrap', 'TTYWrap', 'Timeout' ]
ファイル指定で実行すると最初は何も入ってなくて 2 回目からデフォルトのものが含まれる
unref すると active 扱いされなくなって一覧から消える
最初から入ってるものは OS や CJS/ESM でも違うみたい
console.log(0, process.getActiveResourcesInfo())
console.log(1, process.getActiveResourcesInfo())
これを実行すると
Windows の場合
D:\t12>node a.cjs
0 []
1 [ 'TTYWrap', 'TTYWrap' ]
D:\t12>node a.mjs
0 [ 'CloseReq' ]
1 [ 'CloseReq', 'TTYWrap', 'TTYWrap' ]
Linux の場合
root@426b4d5c3e42:/opt# node a.cjs
0 []
1 [ 'TTYWrap' ]
root@426b4d5c3e42:/opt# node a.mjs
0 [ 'CloseReq' ]
1 [ 'CloseReq', 'TTYWrap' ]
バージョンはどっちも Node.js 18
Windows だと TTYWrap が 2 つ入ってる
Linux だと 1 つ
REPL だと Windows も Linux も TTYWrap がもう一つ増える
ESM だと CloseReq が最初から入ってる
CJS だと入ってない