Ich programmiere ein neues Versprechen, es hat viele verschiedene Bedingungen, die reject()
oder resolve()
in Bezug auf ihren Zustand aufrufen, auch ich weiß, dass der Promise-Status mit dem ersten Anruf auf reject()
| festgelegt wird resolve()
. Meine Frage ist: Gibt es eine native (built-in) Möglichkeit, den Versprechungsstatus zu erhalten? Das Folgende ist ein demonstrativer-Code:Wie überprüft man diesen Versprechenszustand, wenn man ein neues Versprechen programmiert? Js
exports.addStatement = function (db, description, data) {
return new Promise(function (resolve, reject) {
validator.validateStatement(description, data)
.then(function (data) {
//......
if(cnd1)
resolve(res);
if(cnd2)
reject(err);
//......
//How to check if this promise is rejected or resolved yet?
})
.catch(function (err) {
reject(err);
})
})
};
So funktionieren Versprechen nicht. Scheint, als ob Sie das ganze Konzept der Versprechen verpasst haben. Sie können 'then()' und 'catch()' nur verwenden, nachdem das Versprechen von der Funktion zurückgegeben wurde – Roysh
neuer Promise-Status ist mit einem inneren Versprechen verbunden, es funktioniert. –
Zwei Bemerkungen. Warum benutzt du nicht einfach 'if() {} else if() {} else {}' oder einfach 'resolve();'? Auf diese Weise müssen Sie den Status des Versprechens überhaupt nicht kennen und Ihr Code wird sauberer. Und zweitens: Warum brauchen Sie sogar "neues Versprechen", wenn "validator.validateStatement" bereits ein Versprechen zurückgibt? – str