JavaScript
await

awaitは極力使用を避けたいもの

前回の記事では、awaitを使うことで別の処理に実行権を譲れることと、awaitを使うとプログラムが複雑になることを示しました。

プログラムが複雑になることはできるだけ避けたいのですが、JavaScriptはシングルスレッドであるため、awaitの使用はなかなか避けることはできません。というのも、たとえば10秒以上かかる処理があったときに、await未使用だと10秒以上フリーズするからです。

ということで、長い時間かかる処理を実装するときは、ところどころにawaitを入れる必要があります。

しかし、今実装している処理が時間のかかる処理かどうかは、実際に動かしてみないとわかりません。ここでいう「時間のかかる処理」は「相対的に」という意味合いが強いです。

たとえば、今実装している処理にかかる時間の割合が全体の90%の場合、この処理にawaitを取り入れることで大きな改善が望めます。しかし、もしこの割合が90%でなく1%の場合、そこにawaitを取り入れることにほとんど意味はありません。確かにawaitを使うことでフリーズの体感時間は減りますが、その代りにプログラムの複雑さが増します。残り99%はまだフリーズしたままですから、1%の処理にawaitを取り入れることで得られるものは「フリーズの体感時間の減少」<「プログラムの複雑さ」になってしまいます。


まとめ


  1. まずはawaitを使わずに実装する

  2. 各処理にかかる時間を測定し、割合の大きい順に並べる

  3. 割合の大きい処理からawaitを取り入れていく

この順序で実装していくことが理想です。