イベントとして関数を登録すると、その関数内のemitは呼び出されません。それ自身の関数が呼び出されます(ログによってテストされます)。これでメソッド2を使ってイベントを登録すると、それは機能します。どうしてこれなの?クラス内のイベントでNodeJS EventEmitterが呼び出されない
方法1(イベントを呼び出すことはありません):
方法2(作品):
"use strict";
const EventEmitter = require("events");
class DiscordBot extends EventEmitter{
constructor(key){
super();
}
startBot(){
var self = this;
this.bot.on("ready",function() {
self.botReady();
});
}
botReady(){
var self = this;
self.emit("Bot_Ready");
console.log("TESD");
}
}
レジスタ:
bot.on("Bot_Ready", function(){
console.log('this happens ');
});
このようなarrow機能を使用する必要がありますか?this.bot.on( "ready"、> this.botReady()); '? – yurzui
最初の例では、self.botReadyをself.botReady()のように呼び出す必要がありますか? –
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this – yurzui