Javascript Promise
Promiseの利点
thenableなインターフェースが提供されて、直列的に書ける
コード上で、メインスレッド?から脱線せずにコードが書ける、読める
エラー処理をシンプルにする
catchable?なインターフェースが提供されて、エラー処理を
集約?しやすくできる
Promiseの状態
Fullfilled, Rejected, Pending の3つがある
Promiseの作り方
constructorを使って : var promise = new Promise(function(resolve, reject){/*...*/});
Promise.resolve()
Promise.reject()
というクラスメソッドで、ショートカットで作ることも可能
Promiseを返す有名どころの関数:
fetch()
io系なものは、promiseを返すものがおおいかな? ioが入る時点で非同期になるのはOSから?
Promiseの使いかた
instrance methodで、 promise.then(onFullfiled, onRejected)
then()
は常に新しいpromiseオブジェクトを返す。 chainingしてるつもりになってると、気をつける
promise.catch()
もある。
実装の流れ. 引数が関数というのがしっくりこないと???となる。
> Promiseコンストラクタは2つのパラメータを持つ1つのコールバックを引数に取る
当たり前の言い換えだけど、callbackを取る関数があり、さらにそのcallback関数は2つの引数を取る。その2つの引数は関数。
var promise = new Promise(function(resolve, reject) { … })
errorでも, rejectがよばれる。 その際に、errorオブジェクトが渡される
コンストラクトしてできたオブジェクトは、.then() というcallbackをもち、そこで promiseが fullfill(resolve or rejucted)された後の結果を受け取って処理をする。
callbackの約束を書いた(引数にとったよ)、そのcallbackは成功時、失敗時の2つのパターンを取れるようにした。
> 非同期処理の複雑なエラーハンドリングを分かりやすく書くことが出来る点等もメリット
参考
> Promise の resolve 後の挙動は..
>1. resolve で Promise の状態は fulfilled に
普段、javascript書かないので、上記のこのリンクが調べるきっかけになった。初心者に親切。