Ich habe gerade diesen fantastischen Artikel « Generatoren » gelesen und er hebt diese Funktion deutlich hervor, die eine Hilfsfunktion für die Handhabung von Generatorfunktionen ist:
function async(makeGenerator){
return function () {
var generator = makeGenerator.apply(this, arguments);
function handle(result){
// result => { done: [Boolean], value: [Object] }
if (result.done) return Promise.resolve(result.value);
return Promise.resolve(result.value).then(function (res){
return handle(generator.next(res));
}, function (err){
return handle(generator.throw(err));
});
}
try {
return handle(generator.next());
} catch (ex) {
return Promise.reject(ex);
}
}
}
Ich gehe davon aus, dass das async
Schlüsselwort mehr oder weniger mit async
/ implementiert wird await
. Die Frage ist also, wenn dies der Fall ist, was zum Teufel ist dann der Unterschied zwischen dem await
Schlüsselwort und dem yield
Schlüsselwort? Wird await
aus etwas immer ein Versprechen, während yield
es keine solche Garantie gibt? Das ist meine beste Vermutung!
Sie können auch sehen, wie async
/ mit Generatoren await
ähnlich ist, yield
in diesem Artikel, in dem er die asynchronen Funktionen der ' Spawn' -Funktion ES7 beschreibt .