BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Microsoft は Edge Preview Build で Async/Await が利用可能に

Microsoft は Edge Preview Build で Async/Await が利用可能に

原文(投稿日:2015/10/14)へのリンク

Microsoft が提供する Edge ブラウザにて、来るべき ES 2016 の機能である async/await が利用可能となった。同機能は未だプレビュービルドでの実験的な試みだが、同機能の存在は広域な普及に向けての重要な一歩となる。

JavaScript 固有の非同期実装は強力だが、単純な処理の場合でも開発者には過剰なコードを書く負担を強いていた。"Callback 地獄" は JavaScript 開発者が苦笑いしながら頷くジョークだ。近年の開発者は、非同期コードを書くより良い手段として Promise を取り入れている。Promise は十分に進化しており、ES6 仕様の一部となっている。

async/await 機能は Promise からさらに改善しており、従来の Promise でコールバック群を連携させるために必要なコードを排除することができる。関数 getJsonAsync における一例として、Promise を返すがasync/await を利用した場合、より非同期な形式で Promise を利用したものと同様のコードを記載できる。

async function getServerData() {
    try {
        // Once the promise is resolved, the value is returned
        var json = await getJsonAsync();
        
    }
    catch (e) {
        // If the promise is rejected, the result ends up in the catch block
    }
}

C# 開発者は C# 5.0 で導入された async/await と似た構文であることに気づくだろう。C# では非同期的なコードは非同期的な作法で記載することが可能であり、過剰なコードでつなぎ合わせることは不要だ。同様に、JavaScript における async/await は定型的なコード量を削減する素敵な機能だ。

同機能は Windows Insider プログラムにおける build 10547 で利用可能だ。ウィンドウに about:flags を入力し、" 試験的な JavaScript 機能を有効にする " フラグを有効化する。

現在のところ、他のブラウザで同機能は利用できない。Babel Transpiler が 実験機能として async/await をサポートしている。他のブラウザがサポートするのはそう遠くはないだろう。Mozilla は現在取組中だ。

ブラウザへの実装は ECMAScript 標準化プロセスへの必要なステップだ。async/await は現在ステージ 3 であり、"Candidate" となっている。最終ステージである 4 になるためには、実装が必要となる。async/await の大御所である Brian Terlson 氏は、今年の QCon New York で同件と TC39 ES2016 プロセスについて言及している。

この記事に星をつける

おすすめ度
スタイル

BT