BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Node 7.6、async/awaitをデフォルトでサポート

Node 7.6、async/awaitをデフォルトでサポート

原文(投稿日:2017/02/27)へのリンク

Node.js 7.6がリリースされた。async/awaitサポートがデフォルトで有効になり、低メモリデバイスにおけるパフォーマンスが改善されている。

Node 7.6のasync/awaitサポートは、ChromiumのJavaScriptエンジンであるV8バージョン5.5にアップデートしたことによるものだ。これが意味しているのは、async/awaitはもはや実験的なものではないということだ。--harmonyフラグ(ほぼ完成しているけれどもV8チームがまだ安定していないと考える機能を有効にする)を指定しなくても使えるようになる。

async/awaitの一番のメリットは、非同期オペレーションのシーケンスをコールバックを通してネストする「コールバック地獄」を回避できることだ。

たとえば、コールバックを用いた2つの非同期オペレーションの処理は次のようになる。

function asyncOperation(callback) {
  asyncStep1(function(response1) {
    asyncStep2(response1, function(response2) {
        callback(...);
    });
  });
}

async/awaitを使うと、コードが簡素化されて、まるで同期オペレーションのシーケンスのように見える。

async function asyncOperation(callback) {
    const response = await asyncStep1();
    return await asyncStep2(response);
}

コールバック地獄を解決するもう一つの方法にPromiseがある。これはこれまでもJavaScriptで使えていた方法だ。Promiseを用いた場合、先ほどの例は次のようになる。

function asyncOperation() {
  return asyncStep1(...)
    .then(asyncStep2(...));
}

しかし、もっと複雑になると、Promisesを使うのはやっかいになる

また、V8 5.5ではヒープサイズおよびゾーンメモリ消費が改善され、V8 5.3と比較して、低メモリデバイスにおけるメモリフットプリントが最大35%削減されている。

その他の注目すべき変更点は以下の通り。

  • 古いCLIデバッガーnode debugが、新しいデバッガープロトコルnode --inspectに対して書き直された。V8の将来のバージョンでは、このプロトコルだけがサポートされる。
  • fsfile:プロトコルのサポートが追加された。これによりfs.readFile(URL('file:///C:/path/to/file');, (err, data) => {});と書けるようになる。

Node 7.6では、V8 5.5のほか、クロスプラットフォーム非同期I/Oライブラリのlibuv 1.11やzlib 1.2.11などの依存関係もアップデートされている。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT