Asynchronous

FluxのDispatcherとかStoreとか勉強してたとき非同期処理が出てきてよくわかんなかったから勉強した。

とりあえずPromiseとasync/awaitで、Generaterはもういいかなって。まぁ、async/awaitあったら要らんやろ。使用策定中のPresetまで入れなくても使えるのはいいんだけど。

 

結局、asyncで関数定義すると、そのまま実行したときはPromise.resolve(returnの値)、await付けて実行したときは非同期処理だけどそこだけ同期っぽく待ってreturnの値を返すようになるみたいね。先にPromiseの勉強しといてよかった。

PromiseのAPI自体は分かりやすかったけど、Promiseは定義したその場ですぐさま実行されるというか、Promiseオブジェクトが予約券になってそれだけ返ってくるというか、なんとなく把握してる感じ。あとイベント駆動なのにresolveでonFulfilledが呼ばれるって書かれてるとこが多くて混乱した。中ではそうかもしれんけども。

ES.next async/await + Promise で解決できる事、とES6 generators (yield) + Promise + npm aa (async-await) で解決できる事 - Qiita

この記事にも載ってるけど、async/await使ってても2本以上走らせるときはPromise.all生で使わないといけないのかな?

 

遊んだ結果が以下のファイル。

gist.github.com