asyncとawait
async
簡単に説明すると、非同期な処理をスッキリと書ける構文です。
functionの前に「async」とつけるだけです。これで非同期処理を実行できる関数を定義したことになります。
・asyncな関数は必ずPromiseを返します。
・関数が値を返せば、Promiseはその値でresolveします。
・関数がエラーをthrowした場合はPromiseはそのエラーでrejectします。
そしてアロー関数においても上記と同じ宣言をしたい場合、エラー処理をしたい場合、thenを用いて記述したい場合は下記のように記述できます。
下記のようにさらにすっきり記述できます。
最後に、
「asyncとawait」を用いてrejectされる場合を確認してみます。
サンプルとして、4秒を過ぎた場合はエラーになるプログラムを用意します。
エラーになる場合、正常に動く場合の2種類を確かめることができました。
*1:data) => {
エラーが出力され、エラーの内容も確認できます。
await
・awaitはasync関数の中でしか使えません。
・awaitはPromiseがresolveまたはrejectするまでasync関数の実行を一時的に停止します。
この上記の理由から「asyncとawait」はペアで一緒に使われることが多いです。
早速、前回記述した、背景色を変化させていくコードをasyncとawaitを用いて書き直してみます。
*2:) => delayedColorChange('orange', 1000
*3:) => delayedColorChange('yellow', 1000
*4:) => delayedColorChange('green', 1000
*5:) => delayedColorChange('blue', 1000
*6:) => delayedColorChange('indigo', 1000
*7:) => delayedColorChange('violet', 1000