async/awaitと合成可能性
CRANK

κeenです。async/awaitって実装の都合と利便性の良い所取ってるよなーと常々思ってるのを言語化してインターネットに放流します。 何度か似たようなことを言ってるのですがスライドであることが多くてあまり情報量を詰め込めなかったのでブログにまとめます。非同期処理と継続非同期処理は時間のかかる処理を待ち合わせずに別の処理をし、時間のかかる処理が終わってから元の処理を継続する仕組みです。let url = "" let html = fetch url (* この結果を待たずに別の計算をする *) (* fetch urlが終わったあとでここに戻ってきて後続の処理をする *) print html「継続」や「後続」などのキーワードが出てきているとおり、継続の影がチラチラ見えます。 継続とはいってもスレッドのようなタスク単位で分割したいのでフルの継続ではなくて限定継続ですね。現実的には限定継続が使える言語はそう多くないのでユーザにCPS変換させて、コールバックという名前で継続を取ることが多いようです。let url = ""; fetch_url_cb(url, (html) => { console.log(html); }); これで一応非同期実行は実現できるのですが、2つ問題があります。 1つは書きづらい点。コールバック地獄なん…

keens.github.io
Related Topics: Java Scala