ノードワーカースレッドを使用してsetTimeoutループを実行していますが、期待どおりに実行されていません。
ワーカー スレッドのコードは約 13 回しか実行されず、エラーなしで停止します。
// code in nodejs worker thread
const record = (taskName, count) => {
console.log(`testrecord:${taskName}:${count}`);
count++;
clearTimeout(runningId);
if (count < 10000) {
runningId = setTimeout(() => {
record(taskName, count);
}, 1000);
}
}
parentPort.on('message', async function (event) {
const { taskName} = event;
record(taskName, 0);
}
// The console log result:
...
[ 'testrecord:threadtest_22:8' ]
[ 'testrecord:threadtest_22:9' ]
[ 'testrecord:threadtest_22:10' ]
[ 'testrecord:threadtest_22:11' ]
[ 'testrecord:threadtest_22:12' ]
[ 'testrecord:threadtest_22:13' ]
ワーカー スレッドは setTimeout でコードを 13 回しか実行しません。10000回ではありません。なぜ?