async/awaitによる非同期処理

2018年12月14日

async/awaitは、非同期処理をよりシンプルに記述することができます。

 

関連ページ

Promiseによる非同期処理[resolve][reject][Promise.all]

 

 

下記コードを実行すると、2秒後に「範囲内」と表示されます。16行目のtestFunction(10)の引数を仮に1000にすると「エラーです。範囲外」と表示されます。

14行目

asyncを付けると、その関数はPromiseを返すようになります。

 

16行目

awaitはPromiseの値が返ってくるまで待ってくれます。awaitはasyncを付けた関数の中でのみ利用できます。

 

仮に引数を1000にして処理が失敗した場合、すなわちreject関数が実行された場合は例外として処理され、19行目の処理にてエラーが表示されます。

 

 

非同期処理の連結


下記コードを実行すると、2秒ごとに「範囲内」→「範囲内」→「エラーです。範囲外」と順番に表示されます。

 

 

複数の非同期処理を並列処理で実行


複数の非同期処理を並列処理で一気に実行することもできます。下記を実行すると、2秒後に「[ ‘範囲内’, ‘範囲内’, ‘範囲内’ ]」と表示されます。

Promise.all関数によって3つのtestFunction関数を並列に処理しています。もしtestFunction(1000)のようなrejectを呼び出す処理が一つでも存在すると、例外処理されエラーが表示されます。

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー