LoginSignup
2
0

More than 5 years have passed since last update.

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

Posted at

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

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

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

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

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

まとめ

  1. まずはawaitを使わずに実装する
  2. 各処理にかかる時間を測定し、割合の大きい順に並べる
  3. 割合の大きい処理からawaitを取り入れていく

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0