SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

TypeScriptでasync/awaitを使ってみた

そういえば、今までTypeScriptのasync/awaitを使ってなかったので、使い方を軽くφ(..)メモメモ

TypeScript1.x系では、ES3/ES5向けのときはasync/awaitは使えないので、ちょっと敬遠してましたが、
Node.js環境だったら普通に使えるだろうし、、ということで使ってみました。

↓を参考にやってみました。

こんな風に、Promiseでくるんだ関数を用意しておくと、awaitできるようになります。

C#のasync/awaitと同様に、awaitが使えるのはasyncな関数の内部だけになるので注意。

index.ts

function wait(n: number) {
    return new Promise(done => setTimeout(() => done(n), n));
}

async function main() {
    console.log("start");
    for (var i=0; i<10; i++) {
        await wait(1000);
        console.log("next");
    }
}

main();

tsconfigはこんな感じ。
"target": "es6"として、ES6向けにトランスパイルするようにしています。

tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": false,
        "sourceMap": true
    },
    "exclude": [
        "node_modules"
    ]
}

こうすると、1秒間隔でnextと表示されていきます。
非同期な処理でも、普通にfor分とかのループ処理と組み合わせて掛けたり、何かと便利に使えそうですね。