私はNodeJSを学んでおり、何かを明確にしたかっただけです。これまでのいくつかの入門チュートリアルと本では、非常に早い段階でNodeの「ノンブロッキング」アーキテクチャについて説明しました。
したがって、たとえば、この例は、データベースからデータを取得する非同期的な方法を読んでいる本で提供されました。
http.createServer(function (req, res) {
database.getInformation(function (data) {
res.writeHead(200);
res.end(data);
});
});
(私が理解しているように)起こることは、Nodeがデータベースへの呼び出しを行い、次に呼び出しスタックの次のものを処理し続けることです。データベースリクエストが完了すると、匿名コールバック関数のデータ変数が設定され、その関数がコールスタックに追加されます(その後、ノードがそれに到達したときに実行されます)。
私の質問は、データベース要求を正確に処理しているのは何ですか?確かにNodeはブロックしなければなりませんか?データベース要求を処理しているのは何ですか?または、Nodeが外部リソースへの非同期HTTP GETリクエストを待機している場合、Nodeがコールスタックの処理を継続して「非ブロッキング」になることを可能にするリクエストを処理しているのは何ですか?
net
httpが利用できない場合、パッケージがあります。