" Jeneratörler" adlı bu harika makaleyi okuyordum ve bu, jeneratör işlevlerini işlemek için yardımcı bir işlev olan bu işlevi açıkça vurgulamaktadır:
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);
}
}
}
Varsaydığım, async
anahtar kelimenin aşağı yukarı async
/ ile uygulanma şeklidir await
. Öyleyse soru şu, eğer durum buysa, o zaman await
anahtar kelime ile yield
anahtar kelime arasındaki fark nedir? Her await
zaman bir şeyi söze dönüştürürken yield
böyle bir garanti vermez mi? Bu benim en iyi tahminim!
Ayrıca , ES7 asenkron işlevlerinin 'spawn' işlevini açıkladığı bu makalede, jeneratörlere nasıl async
/ await
benzer olduğunu da görebilirsiniz .yield