Ich habe eine Spezifikation von einem Client für die Implementierung einer Methode in einem Modul:
// getGenres():
// Returns a promise. When it resolves, it returns an array.
Wenn eine Reihe von Genres gegeben,
['comedy', 'drama', 'action']
Hier ist eine Skelettmethode mit einem Versprechen:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
});
return promise;
};
Kann das Versprechen gegeben werden, die in den Genres gefundenen Daten zurückzugeben? Gibt es einen besseren Weg, um die Spezifikationsbeschreibung zu erhalten?
javascript
sealocal
quelle
quelle
resolve([genre1, genre2, ...]);
innerhalb der Versprechen-Implementierung tun sollen .Antworten:
Es hört sich so an, als ob Sie nicht verstehen, wie Versprechen verwendet werden. Du gibst ein Versprechen zurück. Später, wenn Ihr Code das Versprechen auflöst, löst er es mit einem Ergebnis auf und dieses Ergebnis wird an den
.then()
Handler übergeben, der an das Versprechen angehängt ist:quelle
Aktualisierte Version mit
await
anstatt.then()
.await
Unterbricht die Ausführung, bis das Versprechen aufgelöst wurde (dh einen Wert hat). Im Gegensatz zur Verwendung können.then()
Sieawait
Werte einfach beibehalten, während Sie verschiedene Funktionen ausführen, die Versprechungen zurückgeben, und die Ausführung in der nächsten Zeile fortsetzen (dies wird als direkter Stil bezeichnet). Es ist auch viel schöner anzusehen, da es mit dem Rest von JavaScript konsistent ist, als.then()
überall.Warten wird in allen aktuellen Browsern und Nodes unterstützt
quelle