を使用して、同期実行させます。どのような約束は、私がここにブログの記事、次の午前ジェネレータ
は、私はそれが悪い習慣を知っている - 私たちは今のようにのみ同期javascript関数の戻り値を理解している(正確にはUrweb)フレームワークのようにGWTを使用しています。その記事
{
'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);
}
から取ら
次のコードは、次のような出力が得られます。 1 3 1000
しかし、約束が同期行われた場合、出力がされている必要があります
1 1000 3
私はそれを間違っているのですか?あるいは、発電機を使って約束を同期させることはできないのですか?
記事は間違っています。それは、それは(不可能である)、同期約束をしない 'then'を使用せずに、シーケンシャル(「同期」)の方法であなたの書き込み非同期のコードをすることができます。 Btw、現代のJで 'async' /' await'を使って同じ好都合な構文を得ます。 – Bergi