खोज…
परिचय
एक async
फ़ंक्शन वह है जो एक वादा लौटाता है। जब तक वादा हल नहीं होता तब तक फोन करने वाले को पैदावार का await
और फिर परिणाम जारी रखें।
एक इटरेटर संग्रह एक साथ के माध्यम से लूप में चलाया जा करने की अनुमति देता for-of
पाश।
एक async पुनरावृत्ति एक संग्रह है जहाँ प्रत्येक पुनरावृत्ति एक वादा है जिसे लूप के for-await-of
उपयोग करके प्रतीक्षा की जा सकती है।
Async पुनरावृत्तियों एक चरण 3 प्रस्ताव हैं । वे Chrome Canary 60 में --harmony-async-iteration
वाक्य - विन्यास
- async फ़ंक्शन * asyncGenerator () {}
- उपज का इंतजार asyncOperationWhichReturnsAPromise ();
- प्रतीक्षा के लिए (asyncGenerator () का परिणाम दें) {/ * परिणाम वादे से हल मूल्य है * /}
टिप्पणियों
एक एस्क्नेटर इट्रिज़र एक घोषणात्मक पुल स्ट्रीम है, जो ऑब्जर्वेबल की डिक्लेक्टिव पुश स्ट्रीम के विपरीत है।
उपयोगी कड़ियाँ
मूल बातें
एक जावास्क्रिप्ट Iterator
एक .next()
पद्धति के साथ एक वस्तु है, जो एक IteratorItem
लौटाता है, जो value : <any>
साथ एक वस्तु है value : <any>
और done : <boolean>
।
ऐसा JavaScript AsyncIterator
एक के साथ एक वस्तु है .next()
विधि है, जो एक रिटर्न Promise<IteratorItem>
, अगले मूल्य के लिए एक वादा।
AsyncIterator बनाने के लिए, हम async जनरेटर सिंटैक्स का उपयोग कर सकते हैं:
/**
* Returns a promise which resolves after time had passed.
*/
const delay = time => new Promise(resolve => setTimeout(resolve, time));
async function* delayedRange(max) {
for (let i = 0; i < max; i++) {
await delay(1000);
yield i;
}
}
delayedRange
फ़ंक्शन अधिकतम संख्या लेगा, और एक AsyncIterator
, जो 1 सेकंड के अंतराल में 0 से उस संख्या की संख्या देता है।
उपयोग:
for await (let number of delayedRange(10)) {
console.log(number);
}
लूप के for await of
नए सिंटैक्स का एक और टुकड़ा है, जो केवल async कार्यों के अंदर उपलब्ध है, साथ ही साथ async जनरेटर भी हैं। लूप के अंदर, मानों की उपज (जो याद है, प्रोमिस हैं) अलिखित हैं, इसलिए प्रॉमिस छिपा हुआ है। पाश के भीतर, आप प्रत्यक्ष मूल्यों (झुकेंगे संख्या) के साथ सौदा कर सकते हैं, for await of
पाश आपकी ओर से वादे के लिए इंतजार करेंगे।
ऊपर के उदाहरण है जब तक यह 9. जो बिंदु पर लॉग 1 सेकंड इंतजार करेंगे, लॉग 0, एक और दूसरा प्रतीक्षा करें, लॉग इन करें 1, और इतने पर, AsyncIterator
हो जाएगा done
है, और for await of
पाश बाहर निकल जाएगा।