JavaScriptライブラリbluebirdでPromiseを簡単に作る

2016.06.24.金
JavaScript

前回に引き続き、今回も、JavaScriptのPromise関連の記事です。

今回は、JavaScriptライブラリのbluebirdを使って、コールバックで非同期処理を行う関数を簡単にPromiseを返す関数に変換する方法を紹介します。

bluebirdとは

bluebirdとは、Promiseを実装したJavaScriptのライブラリです。現在、多くのブラウザやNode.jsなどのJavaScript実行環境では、Promiseが標準で対応されていますが、IEなどの未対応の環境でも、bluebirdを利用することでPromiseを使えるようになります。
それだけでなく、bluebirdにはES2015の標準の仕様にない便利な関数があり、Promiseに対応している環境でも便利なライブラリです。

bluebirdのpromisify、promisifyAllでPromiseを返す関数を作る

promisifyはひとつの関数を対象として、Promiseを返す関数を生成します。
以下のような、Node.jsの標準ライブラリによくある、引数の末尾でコールバック関数を渡す形式の関数が対象となります。

以下のようにすることで、簡単にPromiseを返す関数を生成することができます。
ベタ書きでも書けないことはないですが、Promise化する度に似たことを書くのであれば、冗長なので、用意された関数を使いましょう。

また、ひとつのオブジェクトに含まれるすべての関数を一度にPromiseを返す関数にする、promisifyAllという関数もあります。
Node.jsではコールバック関数で結果を返す関数が多いため、一気に変換できるのは便利です。

以下のように、予めpromisifyAllしたソースを用意しておくと、毎回しなくて良いので楽です。

promisify、promisifyAllの詳しい説明は、以下からご覧になれます。





キー・ポイントでは、どんどん便利な書き方を取り入れるエンジニアを募集しています。