私は学習プロジェクトとしてnodejsでIRCボットのコーディングに取り組んできました。私は次のようなイベントリスナーに頻繁に出くわしました:
bot.addListener("message", function(from, to, text, message) {
.
.
.
});
問題:これがどこでaddListener
定義/説明されているかについての説明をどこでも探していました。何も見つかりません。これはのirc
パッケージからのものnpm
であり、irc
パッケージソース内のすべてのgithubファイルを検索した後でも、文字列のインスタンスが見つかりませんaddListener
。
何が起きてる?これaddListener
がどのように機能しているか、IRCイベントのリスト(「メッセージ」だけでなく)などをどのように把握できますか?
こちらをご覧くださいhttp://nodejs.org/docs/latest/api/events.html#events_emitter_addlistener_event_listener
エミッター.addListener(イベント、リスナー)
Emitter.on(イベント、リスナー)
指定されたイベントのlisteners配列の最後にリスナーを追加します。リスナーがすでに追加されているかどうかを確認するためのチェックは行われません。イベントとリスナーの同じ組み合わせを渡す複数の呼び出しにより、リスナーが複数回追加されます。
server.on('connection', function (stream) { console.log('someone
connected!'); }); Returns emitter, so calls can be chained.
通常、http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructorでオブジェクトに追加されます
util.inherits(constructor、superConstructor)#プロトタイプメソッドをあるコンストラクターから別のコンストラクターに継承します。コンストラクターのプロトタイプは、superConstructorから作成された新しいオブジェクトに設定されます。
追加の利便性として、superConstructorはconstructor.super_プロパティを介してアクセスできます。
var util = require("util"); var events = require("events");
function MyStream() {
events.EventEmitter.call(this); }
util.inherits(MyStream, events.EventEmitter);
MyStream.prototype.write = function(data) {
this.emit("data", data); }
var stream = new MyStream();
console.log(stream instanceof events.EventEmitter); // true console.log(MyStream.super_ === events.EventEmitter); // true
stream.on("data", function(data) {
console.log('Received data: "' + data + '"'); }) stream.write("It works!"); // Received data: "It works!"
irc-botについては、https://github.com/martynsmith/node-irc/blob/master/lib%2Firc.jsの603行目でこの刺し傷を見つけることができます。
util.inherits(Client, process.EventEmitter);
とイベントはのような建設で解雇されました
self.emit('connect'); // same file L:665
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加