Nodeのイベントループ
サーバサイドJavaScript Node.js入門 を年末に一読したのでまとめ。
Nodeのイベントループの概要
HTTPサーバのイベントループ
メインモジュールが読み込まれると、2.のステップでserver.listen(1337)までの初期スクリプトが実行される。3.のステップでクライアントから送られてくるネットワークデータを受信するI/Oイベントを待ち受ける。
クライアントからのHTTPリクエストによってネットワークデータを受信すると、I/Oイベントが発生し登録されたコールバックが実行される。
クライアントからのデータ受信が完了し、データ操作HTTPリクエストヘッダの解析が終了するとrequestイベントが発生し、HTTPレスポンスデータがクライアントに送信される。
非同期イベントの生成
process.nextTic()を使用してイベントを発生させると、必ずJavaScriptの実行がすべて完了した後にイベントがemittされる。
非同期コールバック
process.nextTick()のコールバック実行でcbが呼び出されるときは、すでにコンストラクタによるオブジェクトの生成が終わった後なのでfoo.setbazメソッドが実行することだできる。