Node.js のイベント ループと、イベント プログラミングのしくみを理解しようとしています。私のモジュールがeventのコールバックで何かを返すdata
関数をエクスポートするとします:
var http = require('http');
module.exports.send = function send(message) {
http.request({ hostname: 'google.com' }, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
return chunk;
}
});
};
これはどのように機能しますか?
私が正しく理解している場合http.request
は、非同期操作です。つまり、次のことを意味します。
- への呼び出し
http.request
が実行されます。 - プログラム制御はすぐに Node.jsイベント ループに戻ります。
- リクエストが最終的に何かを返すと (
data
イベントが発行されます)、おそらく数分後、send
関数はデータを返します。前ではありません。
result
であるはずですがundefined
、実際にはそうではありません:
var send = require('mymodule').send;
var result = send({});
console.log(result);