基本シングルスレッド(UIスレッド)でイベントループを回しつつ処理を実行してます。UIスレッドで重い処理を行うと一時的に画面がフリーズしたり、画面が表示されるまでの速度が遅くなったりの原因になります。コードをUIとは別のスレッドで実行できるので、そういった問題を回避できるかもしれません。ここにフリーズする例としない例があります。UIスレッド上で処理されます。非同期ですが別のスレッドで処理されるという違いがあります。UIスレッドとのデータのやり取りを行います。どちらのスレッドでも使うのは2つのメソッドだけです。動くスレッドでは以下のような制限が掛かります。ファイルは拡張子を.worker.jsとするケースが多いようなのでこのルールに則りworkers/ping-pong.worker.jsというファイルを作ります。このファイルの中にはselfというDedicatedWorkerGlobalScopeがグローバル領域で使えるようになっており、これを通してイベントを扱ったり、データを送信したりします。コンストラクタを通して建てれます。なる.jsファイルへのパスを渡します。先程のファイルを使うと以下のようになります。スレッド側でも同じ用にイベントを扱うようにしたり、データを送信します。スレッドから何かしら処理の起点をあげなければ何も始まりません。'ping'});もしコードが即実行されるようになっていればリロードする度にpongと表示されるはずです。上記のような感じで実装した例です。この例はクリックしたら...ですがその度pongとコンソールに表示されます。