EventEmitterクラス
様々なイベント処理を実装するNode.jsのイベントモジュールには、EventEmitterクラスが定義されています。イベントをトリガーするすべてのオブジェクトは、EventEmitter クラスのサブクラスを統合するインスタンス オブジェクトです。Node.js では、オブジェクトのイベント処理関数のバインドとバインド解除に関連するすべての処理が、EventEmitter クラスに定義されています。これらのメソッドを呼び出します。
event: イベント名を表します
listener: イベント処理関数を表します
括弧内のパラメータは、パラメータがオプションのパラメータであることを表します
EventEmitterクラスのメソッドのメソッド
var http = require("http"); var server = http.createServer(); server.on("request", function(req, res){ console.log(req.url); res.end(); }); server.listen(1337, "127.0.0.1");
コード スニペットでは、サーバーがクライアント リクエストを受信すると、クライアントによってリクエストされたターゲットの URL アドレスをコンソール ウィンドウに出力し、応答オブジェクトの end メソッドを使用して応答を直ちに終了することを指定します。
コードを実行し、ブラウザ ウィンドウに http://localhost:1337:// と入力すると、コンソール出力は次のようになります:
コンソール出力
もちろん、複数の経由で実行することもできます。 on メソッド 複数のイベント ハンドラーを同じイベントにバインドします。次のように:
var http = require("http"); var server = http.createServer(); server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
OK、コードを実行すると、コンソール出力は次のようになります:
コンソール出力
さらに、デフォルトでは、最大 10 個の時間処理関数を同じ指定された関数にバインドできますイベント 。 setMaxListeners メソッドを使用してバインドできるイベント処理関数の最大数を変更できます。メソッドは次のとおりです。 on メソッドと、指定されたイベントに対する両方の関数に似ています。イベント処理関数のバインドとの違いは、イベント処理関数が 1 回実行された直後に接続されること、つまり、イベント処理関数は 1 回だけ実行されることです。以下に示すように、once メソッドで使用されるパラメーターは on メソッドで使用されるパラメーターと同じです。
emitter.setMaxListeners(n)
実験を行ってください。 または、次のコードを実行します (上記と同じ):
emitter.once(event, listener)
次に、ブラウザ ウィンドウで 127.0.0.1:1337 を 2 回続けて開きます。コンソール出力は次のようになります。 2 回表示される
その後、on イベントを 1 回のイベントに変更します。コードは次のとおりです:
var http = require("http"); var server = http.createServer(); server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
リクエストは 2 回処理され、残りは出力されるだけです一度!
コードは次のとおりです:
var http = require("http"); var server = http.createServer(); server.once('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.once('request', function(req, res){ console.log('发送响应完毕') }) server.listen(1337, "127.0.0.1");
コンソール出力
コードは次のとおりです:
var http = require("http"); var server = http.createServer(); var testFunction = function (req,res) { console.log('发送响应完毕') } server.on('request', function(req, res){ console.log('接收到客户端请求') }) server.on("request", function(req, res){ console.log('处理客户端请求') console.log(req.url); res.end(); }) server.on('request', testFunction) //删除 server.removeListener('request', testFunction) server.listen(1337, "127.0.0.1");
コンソール出力
は、カスタム イベント (customEvent) を手動でトリガーしたことを示しています。
以上がNode.jsのEventEmitterクラスの各種使用コードを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。