2015-09-04 12 views
24

Ho abbastanza familiarità con l'asincrona/attesa di C# e ho usato dattiloscritto per un anno o giù di lì, qualcuno può per favore dare un semplice esempio che spiega come funziona su dattiloscritto ?? Grazie in anticipo, in attesa di trovare qualche aiuto e implementare la stessaAsync/Await, semplice esempio (dattiloscritto)


UPDATE
sarebbe molto utile se l'esempio include angolare/jquery promessa, in quanto darà una visione chiara di attuazione pratica

+0

Vedere proposta: Funzioni asincrone su TypeScript https://github.com/Microsoft/TypeScript/issues/1664. Anche https://smellegantcode.wordpress.com/2015/02/01/typescript-1-5-async-functions/ e http://www.dotnetcurry.com/javascript/1131/ecmascript6-async-using-generators- promesse –

+2

La tabella di marcia mostra async/attendi come 2.0: https://github.com/Microsoft/TypeScript/wiki/Roadmap (al [23 luglio] (https://github.com/Microsoft/TypeScript/wiki/Roadmap/ aa5e66fabe0d50ef53e6b05b3d1906a3eb40a35b)) –

+0

MatijaGrcic e @JonSkeet skeet, grazie per i commenti, avevo già visto questi documenti, ma non vedo l'ora di fare un semplice esempio pratico, in modo da poterli integrare con le promesse di angularjs –

risposta

28

La chiave è quella di utilizzare un ES6 Promise o qualcosa che implementa le PromiseLike e PromiseConstructorLike interfacce si trovano in lib.d.ts (Read more). Una jQuery promessa does not implement queste interfacce quindi non funzionerà con quello.

Ecco un semplice esempio utilizzando una promessa ES6:

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(); 

Nota che qualsiasi codice contenente un await dichiarazione deve essere all'interno di una funzione async e così ho avvolto il codice in uno.

12

Nota: per utilizzare ES6 in Typescript 1.7 è necessario utilizzare async/await. Con le versioni più bassi, le uscite di Visual Studio

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

e

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

Per ulteriori informazioni si veda per es http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx

+6

Questa è una buona informazione, ma in realtà non risponde alla domanda. Forse dovrebbe essere un commento, quando hai abbastanza reputazione. –

+1

Ne sono abbastanza consapevole, ma come dici tu mi manca la reputazione. Perdonami per quello. – Zartag