javascript - 非同期 - submit コール バック



node.js eventEmitter:ファイル間のイベントをリスンする (1)

Node.jsを使い始めるだけで、私は次のような質問をします:

私はserver.jsファイルに次のjavascriptを持っています:

========================================== ==

function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  route(handle, pathname, response);
  console.log("Request for " + pathname + " received.");
}

var server = http.createServer(onRequest)
server.listen(8888);
console.log("Server started")

========================================== =============

私は別のjsファイルを持っています。そこでは、サーバーが発行した「リスニング」イベントのリスナーを登録したいのですが、それはサーバーによって発行されるイベントです。

元のファイルを変更してサーバーオブジェクトをエクスポートすることはできません。

私の目的を達成する方法はありますか?


サーバーオブジェクトを下のように他のモジュールに渡すか、親モジュールのリスナーとして割り当てることができる他のモジュールに関数を公開する必要があります。 どちらの方法でも動作します。 .on呼び出しがどこにあるかだけで決まります。

// app.js

var otherModule = require('./other-module.js');

function onRequest(request, response) {

  var pathname = url.parse(request.url).pathname;
  route(handle, pathname, response);

  console.log("Request for " + pathname + " received.");
}

var server = http.createServer(onRequest);
otherModule.init(server);
server.listen(8888, function () {
  console.log("Server started");
}); // <-- Passing in this callback is a shortcut for defining an event listener for the "listen" event.
// other-module.js

exports.init = function (server) {
  server.on('listen', function () {
    console.log("listen event fired.");
  });
};

上記の例では、 listenイベントの2つのイベントリスナを設定しました。 最初のものは、 server.listenコールバック関数を渡すときに登録されserver.listen 。 これはserver.on('listen', ...)を実行するためのserver.on('listen', ...) 。 2番目のイベントハンドラはother-module.jsに設定されています(明らかに:)





eventemitter