6)に備わったPromiseは非同期の処理を扱うためのオブジェクトです。処理が成功したか、失敗したかによるコールバックがそれぞれ定められます。Promise()コンストラクタでつくるオブジェクトは、多くの場合関数の戻り値として用いられます。promises」が詳しいものの、実際に試せるコードは少ないようです。本稿では、動きが確かめられる簡単なコードをもとに解説します。簡単な非同期の処理にPromiseオブジェクトを使ってみるつぎの関数(async())にsetTimeout()メソッドで時間待ちの処理を定めました。関数の引数に渡されたミリ秒ののちに、console.log()メソッドで文字列が出力されます。arg);}async(1000);これはPromiseオブジェクトを用いて、つぎのコード001のように書き替えられます。Promise()コンストラクタに渡すのは関数です。その関数は引数としてコールバックの関数(resolve)を受け取ります。非同期の処理を終えたとき、そのコールバックを呼び出すのです。関数が返すPromiseオブジェクトに対しては、Promise.then()メソッドが呼び出せます。引数に渡すのは、処理が成功したときのコールバック関数です。このようにして、関数のおもな処理から非同期の処理を切り離すことができます。Promise.then()メソッドをつないで呼び出すPromise.then()メソッドは、Promiseオブジェクトを返します。したがって、その戻り値に対して、さらにPromise.then()メソッドが呼び出せるということです。前掲コード001の関数(async())をつぎのように書き替えてみましょう。ウィンドウの中をクリックしたとき、コールバック関数(resolve)が呼び出されます。resolve(arg));});}Promise.then()メソッドの引数に渡すコールバックは、以下のようにまたPromiseインスタンスを返すことにします。すると、続けて呼び出すPromise.then()メソッドからコールバック(resolve)が渡せるのです。コンソールには、まずつぎのように出力されます。Promise.then()メソッドそのものは同期的に続けて処理されます。startfinishedウィンドウの中をクリックすると、非同期に分けたコールバック関数が予め定めたタイミングで呼び出されます。書き替えたスクリプトは以下のコード002にまとめました。APIのデータを読み込むつぎは、webで公開されているAPIをXMLHttpRequestオブジェクトで読み込んでみます。NASAのデータにもとづいて、今宇宙でどれだけの人たちが働いているのかわかります。Promiseは使わずに、XMLHttpRequestオブジェクトでJSONデータを読み込むのが以下のコードです。利用」をお読みください。JavaScriptコンソールには、つぎのような配列のデータが示されます。url);request.send();}getpacePeople(url);Promiseクラスを使うには、関数からコンストラクタでつくったインスタンスを返します。つぎのコード001のように処理する関数を引数として定め、コールバック(resolve)はPromise.then()メソッドで与えます。処理が失敗したときのコールバックを加えるPromise.then()メソッドには、つぎのように処理が失敗したときのコールバック関数を第2引数として与えられます。Promise()コンストラクタの引数に定める関数は、第2引数で受け取るコールバック(reject)に失敗の処理を加えればよいのです。APIのデータを読み込む前掲コード003に、処理の成功だけでなく、失敗した場合のコールバックを加えたのが以下のコード004です。併せてサンプル001にjsdo.itのコードを掲げました。ひとつ、Promise.then()メソッドについて補います。成功あるいは失敗のコールバック関数には、引数はひとつしか与えられません。複数の値を渡したいときは、オブジェクトなどにまとめてください。