web-dev-qa-db-ja.com

Async / Await、簡単な例(TypeScript)

私はc#のasync/awaitに非常に精通しており、TypeScriptを1年ほど使用していますが、タイプスクリプトでどのように機能するかを説明する簡単な例を教えていただけますか?事前に感謝し、いくつかの助けを見つけて同じものを実装することを楽しみにしています


[〜#〜] update [〜#〜]
例にangle/jquery promiseが含まれている場合、実用的な実装の明確なビューが得られるため、非常に役立ちます。

32
Pranay Dutta

重要なのは、 (ES6 Promise または libにあるPromiseLikeおよびPromiseConstructorLikeインターフェイスを実装するものを使用することです。 .d.ts続きを読む )。 jQueryの約束 実装しない これらのインターフェースは、それでは動作しません。

ES6 promiseを使用した簡単な例を次に示します。

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

awaitステートメントを含むコードはasync関数内にある必要があるため、コードを1つにラップしていることに注意してください。ただし、今後の提案では「トップレベルの待機」が追加されます。続きを読む こちら

32
David Sherret

Async/awaitを使用するには、TypeScript 1.7でES6をターゲットにする必要があることに注意してください。下位バージョンでは、Visual Studioが出力します

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

15
Zartag