Ich muss das Ergebnis von einem Versprechen zu testen. Wird ein Versprechen rechtzeitig gelöst, um Teil eines Konditionals zu sein?Verspricht ein Versprechen rechtzeitig zu einem bedingten Teil
if (myPromise() > 15 && myOtherPromise()) {
// do stuff when myPromise resolves to over 15 and myOtherPromise is true
} else {
// do stuff when myPromise resolves to 15 or less or myOtherPromise is false
}
Oder muss ich es nur bis saugen müssen und zu tun:
let myP = myPromise();
let myOtherP = myOtherPromise();
promise.all([myP, myOtherP]).then(function(res) {
if (res[0] > 15 && res[1]) {
// do stuff when myPromise resolves to over 15 and myOtherPromise is true
} else {
// do stuff when myPromise resolves to 15 or less or myOtherPromise is false
}
});
von Kommentar unten Dritten zugänglich gemacht für alle „Downvoting“ die Frage und das Denken ist eine Wiederholung.
Nun, ja und nein. Nein, weil ich mit Jasmine arbeite, wo die Expect-Calls automatisch ein Versprechen lösen, wenn man es passiert.
expect(myPromise()).toBeGreaterThan(15)
. Von außen könnte es also denkbar gewesen sein, dass eine bedingte Bedingung eine Verheißung auflösen könnte, bevor irgendwelche Vergleiche durchgeführt werden.
Sie können nicht wissen (Das ist der e-Punkt von asynchron). Just "suck it up" oder rufen Sie eine Rückruffunktion – nicovank
Nun, ja und nein. Nein, weil ich mit Jasmine arbeite, wo die Expect-Calls automatisch ein Versprechen lösen, wenn man es passiert. 'expect (myPromise()). toBeGreaterThan (15)'. Von außen könnte es also denkbar gewesen sein, dass eine bedingte Bedingung eine Verheißung lösen könnte, bevor sie Vergleiche anstellt. – Machtyn
@Machtyn 'if' und die anderen Kontrollflusskonstrukte haben keine Unterstützung für Versprechungen. Es wäre interessant, asynchrone Versionen von ihnen zu haben, aber ich kenne keinen Vorschlag dafür. – ssube