verfolge ich den Blog-Artikel hier: http://www.tivix.com/blog/making-promises-in-a-synchronous-mannerWie Versprechen synchron Generatoren machen execute
die besagt, dass Generatoren verwendet werden könnte Versprechen Ausführung zu synchronisieren.
Ich weiß, es ist eine schlechte Praxis - wir verwenden ein GWT-ähnliches Framework (Urweb, um genau zu sein), das ab jetzt nur synchrone JavaScript-Funktion Rückgabewerte versteht.
folgenden Code aus diesem Artikel entnommen
{
'use strict';
let asyncTask =() =>
new Promise(resolve => {
let delay = 1000;
setTimeout(function() {
resolve(delay);
}, delay);
});
let makeMeLookSync = fn => {
let iterator = fn();
let loop = result => {
!result.done && result.value.then(res =>
loop(iterator.next(res)));
};
loop(iterator.next());
};
console.log(1);
makeMeLookSync(function*() {
let result = yield asyncTask();
console.log(result);
});
console.log(3);
}
gibt die folgende Ausgabe: 1 3 1000
Aber wenn das Versprechen synchron gemacht wurde, hätte der Ausgang gewesen
1 1000 3
Mache ich es falsch? Oder ist es nicht möglich, das Versprechen synchron mit Generatoren zu machen?
Der Artikel ist falsch. Es erlaubt Ihnen, asynchronen Code in einer sequentiellen ("synchronen") Weise zu schreiben, ohne 'then' zu verwenden, es macht keine Versprechen synchron (was unmöglich ist). Btw, Sie erhalten die gleiche vorteilhafte Syntax mit 'async' /' erwarten' in modernen Js. – Bergi