Javascriptの非同期処理
結構記憶が抜けてる
Promise
改めて読むと結構シンプルな仕組みだな
一回以前理解したからかもだけど
ややこしいところ
一回catchしたらrejectedからresolvedに変化する
エラー処理してもうOK、みたいな
なので、catchのあとにthenがあったらそれも処理される
Promiseを使いたい理由は、非同期/コールバック的なスタイルのコードに対して、同期処理の書き方でエラーを取り扱うことができるからです。
なるほど
エラーが起きた場合、後続のcatchにジャンプします(そして途中のthenはスキップします)
同期処理のエラーについても同様に、最も近い後続のcatchで捕捉されます
Promise.then
return xすると、xをvalueにもったresolved promise objectが返される
Promise.catch
Promise.all/race
これ便利だな
Swiftでこれ実装しようとして苦労した覚えある
allがAND, raceがORか
async
別スレッドで非同期的に動く関数ですよという宣言
async funcはPromiseオブジェクトを返すので、async_func().then(~~)みたいな書き方ができる
async funcの返り値はPromise Valueとして帰ってくる
await
.thenのチェーンが辛いので、同じ階層でフラットに書けるようにしたやつ
async func内でしか使えない
それ以外だとメインスレッドが止まっちゃって困るってことか
例
自分のページのscript.jsはESModuleで読み込まれるので、↓のように直に書いても動く
code:js
const res = await fetch("なんか読み込む");
const text = await res.text();
// ...
資料
とてもわかりやすいのでおすすめtakker.icon*3
Promiseが動く仕組みを知りたいときに読む