update.コールバック地獄を解消するPromiseパターンPromiseは非同期処理のデザインパターンの一つです。非同期処理関数の戻り値として「処理の途中」を意味するオブジェクトを返す事で、かゆいところに手を届くようにします。ちなみに言語によってはFutureと呼ばれることもあります。Wikipedia)言語によって何が利点になるかは微妙に異なりますが、JavaScriptではコールバック地獄を抑止できる事が大きいでしょう。JavaScriptでよく見られる非同期処理は、処理結果をコールバック関数で受けるパターンですね。標準APIでも頻繁に用いられています。resultを使った処理});関数を変数として扱えるJavaScriptならではのシンプルな手法ですね。});});なんということでしょう。シンプルかと思われた処理は避ける事の出来ないカオスへと変貌してしまったではありませんか。Promiseパターンでは、以下のように書き表します。});どうですか?インデントがなくなってスッキリすると思います。ないと感じる場合、おそらくreturnとthenというキーワードが増えたからでしょう。それさえ慣れてしまえばよいのです。この時のmyAsyncProcess1〜3()やthen()の戻り値のオブジェクトの事をPromiseオブジェクトと呼んだり、then()メソッドを持つ事からThenableオブジェクトと呼びます。Promiseオブジェクトを今すぐ使い始める必要な環境EcmaScript6ではPromiseパターンに沿った非同期関数を簡単に実装するためのPromiseクラスが追加されます。モダンブラウザではPromiseクラスが利用可能ですし、node.jsでも0.12から標準で利用可能になる予定です。MDNまた、ライブラリも公開されています。Promiseのライブラリは複数公開されていて、主なものとして以下があります。基本的な使い方Promiseクラスを用いて、Promise版setTimeout()を作るとこうなります。});エラーの処理Promiseオブジェクトはエラー発生時の統一的な解決方法を持っています。Promiseクラスのコンストラクタに渡す関数が、reject関数を受けていますが、非同期処理中にはresolve関数の代わりにこの関数を呼び出します。.then()と同様に.catch()を用いる事で、エラーをキャッチできます。エラー発生時はreject関数を呼ぶ。引数としてエラー原因を渡す事が出来る。正常時はresolve関数を呼ぶ。引数として処理結果を渡す事が出来る。});Promiseの連結then関数は何度でもthen関数をチェーンすることができ、それぞれ前のthen関数の処理が終わったときに呼び出されます。then関数の戻り値に何か値を返すと、次のthen関数の引数になります。戻り値にPromiseオブジェクトを返すと、そのPromiseの完了を待ってから、次のthen関数を呼び出します。});この通り、Promiseは何度非同期処理が重なってもコールバック地獄に陥ることが無く、また、非同期処理を統一的に表すことが出来るインターフェイスです。