モダンなJSの話──Promise

※この記事はInnovator Japan Engineers’ Blogで掲載されている記事を転載したものです。

Promiseとは

Promiseとは・・

The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value. MDN - Promise

だそうです。

ざっくりまとめると、Promiseとは、非同期処理やその結果をいい感じにしてくれるオブジェクトのことです

Promiseを使うと主に以下のようなメリットが得られます。

  • ネストが減る
  • 可読性が上がる
  • 処理の結果を次の処理に渡すことができる
  • 例外を補足できるようになる

Promiseについて例を上げて確認してみます。

Promiseを使わない場合の非同期処理

Promiseを使わないコールバックを使った非同期処理の例です。

asyncSayHiを連続して呼び出したい時は、こんな感じのいわゆるコールバック地獄になってしまいます。

Promiseを使う場合の非同期処理

先程のコールバックを使った非同期処理の例をPromiseを使って書き直すとこんな感じになります。

並列で処理を複数実行したい場合は、Promise.allというメソッドが用意されています。

所感

コールバックのことを理解していればPromiseはさほど難しく感じないかと思います。

ここで紹介していないPromiseのメソッドはMDNで確認してみてください。

参考