Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

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

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

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

まとめ

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away