Ich war gerade diesen fantastischen Artikel lesen -Unterschied zwischen Asynchron/erwarten und ES6 Ausbeute mit Generatoren
https://www.promisejs.org/generators/
und es unterstreicht eindeutig diese Funktion, die eine Hilfsfunktion für den Umgang mit Generator-Funktionen 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);
}
}
}
was ich Hypothese ist mehr oder weniger die Art, wie das async-Schlüsselwort mit async/await
implementiert wird. Also die Frage ist, wenn das der Fall ist, was zum Teufel ist der Unterschied zwischen dem await
Schlüsselwort und dem yield
Schlüsselwort? Macht await
immer etwas zu einem Versprechen, während yield
keine Garantie gibt? Das ist meine beste Schätzung!
Sie können auch sehen, wie async/await ähnlich ist mit Generatoren in diesem Artikel zu erhalten, wo er die ‚Spawn‘ Funktion beschreibt: https://jakearchibald.com/2014/es7-async-functions/
asynchrone Funktion -> eine Coroutine. generator -> Iterator, der eine Coroutine verwendet, um seinen inneren Iterationsmechanismus zu verwalten. hunter horcht eine Coroutine aus, während yield ein Ergebnis aus einer Coroutine zurückgibt, die ein Generator verwendet: –
'async/await' ist kein Teil von ES7. Bitte lesen Sie die Beschreibung des Tags. –
@david haim, yeah aber async erwarten ist auf Generatoren gebaut, so dass sie nicht unterscheidbar –