【2018-10版】JavaScript Promiseとは【2019-01-04改訂版】
Categories:
javascript
いきさつ
Deferredオブジェクトなるものが出てきてわけわからんちん問題になってしまった。。 うーん。。やっぱりよくわかってなかったのでおさらいしたい。。
先に登場人物(用語)を紹介したい
- Promise
Promiseは約束手形
なにがいいの?
成功はもちろん、失敗してもthenで終わったことが実行が終わったことが確認でき、かつエラーハンドリングもできる。 しかも順番に。。。 コールバック地獄にならない。。
よくある記述。これだけ抑えとけばなんごか。。。
Promiseオブジェクトをつくりたい。作って返したい。
new Promise( /* executor */ function(resolve, reject) { … } ); だからこうも書ける new Promise((resolve, reject)=>{…})
返り値でプロミスを返す、、関数の作り方(中でこうなってるよっ話)
function プロミス返す関数 (){
return new Promise((resolve, reject) => {
let result = "成功"
resolve(result); //ここが呼び出し時にthen()の引数で取れる
reject("失敗しました");//ここが呼び出し時にcatch()の引数で取れる
});
}
Promise.catch(失敗したとき)
Promise(null,失敗したとき) とイコール。 つまりショートコードです。
Promise.all([やりたいこと(),複数の場合(),こう書く()]).then(全部おわったお())
allを使った場合、全てのpromiseが成功 (= then)になった場合、 最終的になthen(foo)を実行します。
Promiseオブジェクトを返すって書いてる。。どうしたらいい?
うけとりましょう!! どうやって? そのオブジェクトに.thenで完了次第、なにかが返ってきます。
つまり。。。
let 謎のresult = なんかPromiseを返すらしいメソッド(); 謎のresult.then( 返ってきたらやりたいこと(resultObject); ).catch( なんかエラーらしい(); )