web-dev-qa-db-fra.com

Async / Await, exemple simple (TypeScript)

Je suis assez familier avec l'async/wait de c # et j'utilise TypeScript depuis un an environ, est-ce que quelqu'un peut donner un exemple simple expliquant comment cela fonctionne sur dactylographié ?? Merci d'avance, impatient de trouver de l'aide et de la mettre en œuvre


MISE À JOUR
il serait très utile que l'exemple inclue une promesse angulaire/jquery, car il donnera une vision claire de la mise en œuvre pratique

32
Pranay Dutta

La clé est d'utiliser un ES6 Promise ou quelque chose qui implémente les interfaces PromiseLike et PromiseConstructorLike trouvées dans la bibliothèque .d.ts ( En savoir plus ). Une promesse jQuery n'implémente pas ces interfaces donc cela ne fonctionnera pas avec ça.

Voici un exemple simple utilisant une promesse 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 {
        const data = await getStringFromWebServerAsync("http://localhost/GetAString");
        console.log(data);
    }
    catch (err) {
        console.log(err);
    }
}

asyncExample();

Notez que tout code contenant une instruction await doit se trouver dans une fonction async et j'ai donc encapsulé le code dans une seule. Cela dit, une proposition à venir ajoute "attente de haut niveau". En savoir plus ici .

32
David Sherret

Veuillez noter que vous devez cibler ES6 dans TypeScript 1.7 pour utiliser async/wait. Avec les versions inférieures, les sorties Visual Studio

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

et

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

Pour plus d'informations, voir par ex. http://blogs.msdn.com/b/TypeScript/archive/2015/11/03/what-about-async-await.aspx

15
Zartag