2015-09-04 21 views
24

मैं सी # के एसिंक/प्रतीक्षा के बारे में काफी परिचित हूं और एक वर्ष या उससे भी अधिक के लिए टाइपस्क्रिप्ट का उपयोग कर रहा हूं, क्या कोई भी सरल उदाहरण दे सकता है कि यह टाइपस्क्रिप्ट पर कैसे काम करता है ?? अग्रिम धन्यवाद, इंतजार कर रहे कुछ मदद खोजने के लिए और एक हीAsync/Await, सरल उदाहरण (टाइपस्क्रिप्ट)


अद्यतन को लागू करने के
अगर उदाहरण के कोणीय/jQuery वादा भी शामिल है यह बहुत मददगार होगा, के रूप में यह व्यावहारिक कार्यान्वयन की एक स्पष्ट विचार दे देंगे

+0

प्रस्ताव देखें: टाइपस्क्रिप्ट पर Async फ़ंक्शंस https://github.com/Microsoft/TypeScript/issues/1664। इसके अलावा https://smellegantcode.wordpress.com/2015/02/01/typescript-1-5-async-functions/ और http://www.dotnetcurry.com/javascript/1131/ecmascript6-async-using- जनरेटर- वादे –

+2

रोडमैप 2.0 के रूप में async/await दिखाता है: https://github.com/Microsoft/TypeScript/wiki/Roadmap ([23 जुलाई] के रूप में (https://github.com/Microsoft/TypeScript/wiki/Roadmap/ aa5e66fabe0d50ef53e6b05b3d1906a3eb40a35b)) –

+0

मतिजाग्रासिक और @ जोन्स स्केट स्कीट, टिप्पणियों के लिए धन्यवाद, मैंने पहले ही इन दस्तावेज़ों को देखा था, लेकिन वास्तव में कुछ सरल व्यावहारिक उदाहरण के लिए तत्पर हैं, ताकि मैं इसे कोणीय वादे के –

उत्तर

28

कुंजी एक ES6 Promise या कुछ है कि lib.d.ts (Read more) में पाया PromiseLike और PromiseConstructorLike इंटरफेस को लागू करता है उपयोग करने के लिए है। एक jQuery वादा does not implement इन इंटरफेस इसलिए यह इसके साथ काम नहीं करेगा।

function getStringFromWebServerAsync(url: string) { 
    return new Promise<string>((resolve, reject) => { 
     // note: could be written `$.get(url).done(resolve).fail(reject);`, 
     //  but I expanded it out for clarity 
     $.get(url).done((data) => { 
      resolve(data); 
     }).fail((err) => { 
      reject(err); 
     }); 
    }); 
} 

async function asyncExample() { 
    try { 
     let data = await getStringFromWebServerAsync("http://localhost/GetAString"); 
     console.log(data); 
    } 
    catch (err) { 
     console.log(err); 
    } 
} 

asyncExample(); 

ध्यान दें कि किसी भी एक await बयान युक्त कोड एक async समारोह के भीतर होने की जरूरत है और इसलिए मैं एक में कोड लिपटे है

यहाँ एक ES6 वादा का उपयोग कर एक सरल उदाहरण है।

12

कृपया ध्यान दें कि आपको async/await का उपयोग करने के लिए टाइपस्क्रिप्ट 1.7 में ES6 को लक्षित करने की आवश्यकता है। पूर्व के संस्करणों, दृश्य स्टूडियो आउटपुट

TS1308 'await' expression is only allowed within an async function. 

और

TS1311 Async functions are only available when targeting ECMAScript 6 and higher. 

अधिक जानकारी के लिए देखते हैं जैसे के साथ http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx

+6

में बदल दिया है, यह अच्छी जानकारी है, लेकिन वास्तव में सवाल का जवाब नहीं देती है। शायद यह एक टिप्पणी होनी चाहिए, जब आपके पास पर्याप्त प्रतिष्ठा हो। –

+1

मुझे इसके बारे में बहुत जानकारी है, लेकिन जैसा कि आप कहते हैं कि मुझे प्रतिष्ठा की कमी है। उसके लिए खेद है। – Zartag

संबंधित मुद्दे