async/awaitの使い方

いまさらですが、ECMAScript 2017でasync/awaitが追加されました。
これまでのコールバック,Promise,async/awaitと書き方の違いを書いていきます。

前提

node.js v7.6以上
node.js v7系で試す場合は、オプション「–harmony-async-await」が必要です。

以下コード内で使用している、Util.promisifyはnode.js v8系からのものとなります。

環境

項目 バージョン
node.js 9.11.1

DynamoDB usersテーブル
パーティションキー:id(string)

コードの流れ

  • getItemParams.jsonを読み込む
  • DynamoDB.getItemを実行
  • 結果を表示

getItemParams.jsonの内容

[コールバック]AWS DynamoDB GetItem

これぐらいだとあまり苦労せずに読むことができますが、ファイル読み込みDynamoDBへのリクエストとネストが深くなり解りづらいと思います。

[Promise]AWS DynamoDB GetItem

Promisethen/catchのメソッドチェーンを使って処理を記述していきます。

ネストも浅いですし、「処理」「処理結果」を分けて記述し解りやすくなったのではないでしょうか。
使ってみると、then/catchのメソッドチェーンを使用して複雑な処理を記述するのが面倒に感じると思います。

[async/await]AWS DynamoDB GetItem

async/awaitasync functionawait演算子からなります。
awaitasync function内で利用でき、Promiseの処理が完了するのを待機します。
Promiseでの実装ではメソッドチェーンを使って繋げていく複雑さがありましたが、async/awaitでは非同期処理を同期処理の様に記述することができ、楽に読むことができるのではないでしょうか。

【注意】
同期的に記載でき、Promiseを使用していないようですが、async functionの戻り値は、Promiseになります。
以下の処理の後に、別処理を行う様な場合は戻り値がPromiseであることを忘れないようにしてください。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA