I Klasse nennen folgenden CodeFehler bei der Verwendung von Klassen und Versprechen in Nodejs?
var user_ctx = new user();
user_ctx
.set_email(req.body.email)
.then(user_ctx.set_username(req.body.username))
.catch((err)=>{
console.log(err);
});
und die Klasse definiert wird als
function user() {
this.user = {};
};
user.prototype.set_username = function (username) {
return new Promise((fullfill,reject)=>{
this.user.username = username;
fullfill();
});
};
user.prototype.set_email = function (email) {
return new Promise((fullfill,reject)=>{
var email_ctx = new email_lib(email);
email_ctx
.is_valid()
.then(function() {
this.user.email = email;
})
.then(fullfill)
.catch(reject);
});
};
folgt das Problem ist, dass die email
wir nicht in benutzerdefiniert. Ich habe auch versucht die folgende
user.prototype.set_email = function (email) {
return new Promise((fullfill,reject)=>{
var email_ctx = new email_lib(email);
var that = this;
email_ctx
.is_valid()
.then(function() {
that.user.email = email;
})
.then(fullfill)
.catch(reject);
});
};
wodurch es that
innerhalb Callback-Funktion Referenzierung; aber die E-Mail wird immer noch nicht eingestellt. Habe schon versucht zu loggen, dass die Variable email
dort in der Versprechungskette von set_email
ist, wo liege ich falsch damit?
'return new Promise ((fullfill, ablehnen) => { this.user.username = username; });' - dies ist ein Versprich, dass es niemals etwas anderes als ein ausstehendes Versprechen geben wird - das hat überhaupt keinen Wert –
@JaromandaX Ich habe vergessen, diesen 'fullfill()' Code zu diesem Block hinzuzufügen, nur um den Code kurz und auf den Punkt zu halten. Das Problem ist mit der Einstellung der Wert der E-Mail in 'this.user' die Einstellung von' username' funktioniert gut, die ich verifiziert, indem Sie eine andere Methode, um den Inhalt der gleichen – georoot
gut drucken, Sie sind auch der klassischen Versprechen schuldig Anti-Muster - https://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it –