Ich schreibe gerade eine Klasse in JavaScript mit einer Login-Methode.NodeJS-Klassenmethode Asynchrone Rückgabe
const EventEmitter = require('events');
const util = require('util');
const Settings = require('./config');
const config = new Settings();
const http = require('request');
class Client extends EventEmitter {
constructor(username, password) {
super();
this.username = username;
this.password = password;
}
get login() {
return this.login();
}
login() {
http.post({
url: config.host + "v" + config.version + "/method/account.signIn.inc.php",
body: "username="+ this.username + "&password=" + this.password + "&clientid=" + config.clientid
}, function(error, response, body){
return body;
});
}
}
module.exports = Client;
Ich bin mit dem Anforderungsmodul auf HTTP-Anfragen zu machen, aber Anfrage asynchrone Aufrufe verwendet, und ich bin immer undefined
bekommen, wenn console.log(client.login());
aus einer anderen Datei aufrufen. Ich habe viele Lösungen gesehen, die auf asynchrone Aufrufe mit Rückrufen abzielen, aber ich kann es nicht mit Rückrufen oder Versprechen innerhalb einer Klasse herausfinden.
Es macht keinen Unterschied, in einer 'Klasse' zu sein. Verwenden Sie die gleichen Lösungen, die Sie gefunden haben. – llama
Nun, das funktioniert nicht wirklich. Ich kann keinen Callback-Parameter im Getter definieren. Anmelden(); als Funktion funktioniert auch nicht. – JbSel
Verwenden Sie dann keinen Getter. Oder verwenden Sie einen anderen Methodennamen als den Getter. In beiden Fällen können Sie das Ergebnis nicht direkt an den Aufrufer senden. – llama