http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.htmlでWeb ワーカーについて読んだことがあります。その目的は理解できたと思いますが、主な目的の 1 つがつまり、「ページの応答性を維持するために譲歩することなく、長いタスクを実行できます」。Webワーカーなしですでに達成できるでしょうか? Callbak を登録すると、長いタスクを実行することもでき、準備が整ったときにのみ中断することができ、ブロックすることはありません。それは同じではありませんか?
2 に答える
コールバックを使用すると、同時実行を管理できます。それがタスクの処理です。必ずしも簡単な方法ではありません。
Webworker を使用すると、より簡単な方法で同時実行が可能になるだけでなく、並行処理も可能になります。つまり、タスクは実際に並行して実行されます。これらは必ずしも互いにブロックするわけではなく、UI をブロックすることもありません。
Web ワーカーの前にブラウザーで長い JavaScript ベースの実行タスクを実行するには、UI の応答性を維持できるように、細かく管理して小さな部分に分割する必要がありました。そしてもちろん、複数の長時間実行タスクを持つことはより複雑でした。
過去数年間で Web ブラウザーが大幅に増加したことはわかっていますが、それは主に、V8 (Google)、Chakra (Microsoft) などのエンジンで行われた多くの作業によるものです。これまでの JavaScript は、単一のスレッドで実行されます。シングル スレッド アーキテクチャの問題は、複雑なスクリプトを実行するとコードがブロックされ、UI が応答しなくなることです。この問題を解決するには、さまざまな方法があります。
- 作業をサーバーにオフロードしますが、アプリを高速化するにはファット クライアントが推奨されます
- 非同期呼び出しを使用しますが、非同期呼び出しと promise の多くの複雑なエコシステムはコールバック地獄につながる可能性があります
- マルチスレッドを活用します。面白い!
Web ワーカーは、JavaScript でマルチスレッド機能を提供することにより、この問題を解決します。