ich einen Benutzer-API und einen Teil des API-Code bin die Gestaltung ist wie folgt:auf einer externe Funktion ein Versprechen zurück mit Asynchron-Daten von einer inneren Funktion zurück
module.exports = {
findByEmail: (email) => {
db.collection('Users').findOne(email: email), (err, result) => {
assert.equal(err, null);
return new Promise(resolve) => {
resolve(result);
}
}
}
}
Meine Absicht ist hier findByEmail
Rückkehr zu machen ein Versprechen, so dass er aufgerufen wie sein: wie oben nicht erreicht
require('./models/User').findByEmail({email: '[email protected]'})
.then((user) => {
console.log('User account', user);
});
jedoch definieren meine API, was ich will, da die innere Funktion derjenige, der das Versprechen zurück, während die externe Funktion (dh ist findByEmail
) endet damit, dass kein Abschlussball zurückgegeben wird iss. Wie stelle ich sicher, dass die externe Funktion ein Versprechen mit den Daten zurückgibt, die von der inneren Funktion zurückgegeben werden?
Natürlich ist es eine Option, die externe Funktion einen Callback akzeptieren zu lassen, aber das würde bedeuten, dass die externe Funktion nicht mehr verhandelbar ist.
Oh genannt wird ja ! Ich kann nicht glauben, dass ich das vermisst habe: | –
@AlexanderMac In diesem Beispiel nicht benötigt. Ein Versprechen kann nur "einmal" gelöst oder abgelehnt werden. Einige mögen es bevorzugen, dort eine Rückkehr zur Klarheit zu sehen, es ist nicht für eine korrekte Ausführung erforderlich. Wenn irgendeine zusätzliche Verarbeitung stattfindet, wäre natürlich die Rückkehr erforderlich. –