process.nextTick() を理解する
Node.js のイベントループを理解しようとするとき、その重要な部分の 1 つが process.nextTick() です。ランタイムがイベントのために JavaScript にコールバックするたびに、それをティックと呼びます。
process.nextTick() に関数を渡すとき、現在の操作が完了した直後、イベントループの次のフェーズに移行する前に、この関数を呼び出すようにエンジンに指示します。
.(() => {
// do something
});
イベントループは、現在の関数コードの処理でビジー状態です。この操作が終了すると、JS エンジンはその操作中に nextTick の呼び出しに渡されたすべての関数を実行します。
これは、JS エンジンに関数を非同期的に(現在の関数の後で)処理するように指示する方法ですが、それをキューに入れるのではなく、できるだけ早く処理します。
setTimeout(() => {}, 0) を呼び出すと、次のティックの最後にその関数が実行されます。これは、呼び出しを優先し、次のティックの開始直前に実行する nextTick() を使用する場合よりもずっと後になります。
次のイベントループの反復で、そのコードが既に実行されていることを確認したい場合は、nextTick() を使用します。
実行順序とイベントループの仕組みについて詳しく知るには、専用の記事をご覧ください。