Ich frage mich, wie ich einen Eventhandler in einer Ecma6-Klasse hinzufügen könnte. Das folgende Beispiel funktioniert, aber ich möchte die Event-Handler in der Klasse selbst.Ecma6 Class Event Handler
Hier ist der Code für die Klasse
class Bot {
constructor(username,password,shared_secret,identity_secret,bot_number) {
this._username = username;
this._password = password;
this._shared_secret = shared_secret;
this._identity_secret = identity_secret;
this._bot_number = bot_number;
this._logged = false;
this._client = new SteamUser();
this._manager = new TradeOfferManager({
"steam": this._client,
"domain": "xxxxxxx",
"language": "en",
"pollInterval": "3000",
"cancelTime": "1800000"
})
this._community = new SteamCommunity();
}
get botNumber() {
return this._bot_number;
}
get client() {
return this._client;
}
get manager() {
return this._manager;
}
set logged(logged) {
this._logged = logged;
}
login() {
console.log("In Login Request for Bot: "+this._bot_number)
this._client.logOn({
"accountName": this._username,
"password": this._password,
"twoFactorCode": SteamTotp.getAuthCode(this._shared_secret)
})
}
setWebCookies(sessionID,cookies,botNumber,manager) {
manager.setCookies(cookies, function (err) {
if (err) {
console.log(err);
process.exit(1); // Fatal error since we couldn't get our API key
return;
}
console.log("Got API key: " + manager.apiKey+" for Bot Number: "+botNumber);
});
this._community.setCookies(cookies);
}
Und hier, wo ich die Klasse zu verwenden und die Event-Handler außerhalb der Klasse hinzufügen
bot1.login();
bot1.client.on('webSession', function (sessionID, cookies) {
bot1.setWebCookies(sessionID,cookies,bot1.botNumber,bot1.manager);
});
bot1.client.on('loggedOn', function() {
console.log("Bot "+bot1.botNumber+" successfully logged in!");
bot1.logged(true);
});
Und wieder würde ich diesen Event-Handler haben möchte in der Klasse selbst.
Sicher, nur in eine Methode von 'Bot1'? Was ist das Problem, hast du das versucht? – Bergi