मैं सिर्फ इस शानदार लेख « जनरेटर » को पढ़ रहा था और यह इस फ़ंक्शन को स्पष्ट रूप से उजागर करता है, जो जनरेटर कार्यों को संभालने के लिए एक सहायक कार्य है:
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);
}
}
}
जो मैं परिकल्पना बनाना कम या ज्यादा तरीका है async
खोजशब्द के साथ लागू किया गया है async
/ await
। तो सवाल यह है कि अगर ऐसा है, तो क्या बिल्ली await
और कीवर्ड में अंतर है yield
? क्या await
हमेशा किसी वादे में कुछ बदल जाता है, जबकि yield
ऐसी कोई गारंटी नहीं है? यह मेरा सबसे अच्छा अनुमान है!
आप यह भी देख सकते हैं कि इस लेख में जनरेटर के साथ कैसे async
/ await
के समान है yield
जहां वह 'स्पॉन' फ़ंक्शन ES7 async फ़ंक्शन का वर्णन करता है ।