2

最近、私はウェブワーカーに遭遇しました。これは、スクリプトを並行して実行する方法です。ユーザーインターフェイスを「フリーズ」せずにスクリプトをバックグラウンドで実行する。私がこれを見つけたとき、重要なUXの性能向上をもたらすべきである私のイオンアプリに実装するための新しい技術を見つけたと思う。ウェブワーカーはイオンアプリに有益でしょうか?

しかし、いくつかの検索の後、私はほとんどのイオンでウェブ労働者についての記事の話を見つけることはありません。ウェブの労働者は非常に新しいものではないので、それについてイオンやアングルではほとんど言及しないのはなぜですか?イオンは実装に適していないのですか?それとも、私が見落としていることですか?イオンアプリ上の有益

+1

何がウェブの労働者を使用して達成しようとしていますか? – guest271314

答えて

10

ウィルウェブの労働者?

これは、ウェブワーカーに負担をかけることができるかどうかによって大きく異なります。ウェブ労働者として

がほとんどないが、イオン、あるいは角度でそれについて言及する理由は、非常に新しいものではありませんか?

ウェブ労働者のコードは、直接(例えば、DOMを操作し、またはalertの操作を行い、オーディオを再生することはできませんブラウザのUIを操作することはできませんので、ウェブの労働者は、UIフレームワークとは何の関係もないので等。)。そのため、WebワーカーコードではUIフレームワークライブラリをほとんど使用していません。そのライブラリの仕事は主にWebワーカーが行うことができないことです。その代わりに、DOMなどを使用することができる1つのメインUIスレッド(ページのデフォルトのJavaScriptスレッド)があり、UIフレームワークライブラリを使用する理由があります。

詳細:

はもともと、WebブラウザでJavaScriptがまた、UIを更新し、単一のスレッド上で実行しました。これは並行性の問題のない非常に簡単なモデルを作成し、非常に簡単で成功しました。 JavaScriptはますます多くのことに使われるようになってきたため、UIスレッドが処理に邪魔になり、ブラウザが "スロースクリプト"警告などのヒューリスティックを実装してユーザーがブラウザを考えなかった凍っていた。

ウェブワーカーは、ブラウザでホストされたJavaScriptにスレッドを持たせるために導入されましたが、同時実行性の問題なしに単一のUIスレッドの強力な単純さを維持しました(これは、グローバルデータエリアを他のスレッド)。彼らは、私たちはそれらのスレッドでUIを更新することができ、私たちは他のスレッドで重い処理をやらせるが、ない

仕事が間接的 UIに関連することができます。例えば、最近のブラウザ上では、WebワーカーコードにメインUIコードから、transferrable objectsと呼ばれるオブジェクトの特定の種類を、送信することが可能です。 IIRC、キャンバスは転送可能です。 1つのスレッドから別のスレッドに転送可能なオブジェクトをポストすると、ソース内ではなくターゲット内でしかアクセスできなくなるため、並行処理の問題を回避します。したがって、UIと直接対話することができるメインのUIスレッドは、(キャンバスのような)何かをとり、それをWebワーカーに転送して(何かを変換する)可能性があります。しかし、その作業はブラウザのUI(DOMなど)を直接操作する必要がないため、UIフレームワークライブラリを使用することはあまりありません。

+0

あなたの答えをありがとう。私はいくつかのUI処理をしているとしましょう、私はそれをWebワーカーにオフロードできますか?処理が完了したら、結果を取得してUIにプッシュしますか? – user1995781

+1

@ user1995781:処理によって異なります。最新のブラウザでは、メインのUIスレッドからキャンバスをWebワーカーに転送したり、Webワーカーのキャンバスを操作したり、それをメインのUIスレッドに戻して再表示したりすることができます。キャンバスは[移転可能なオブジェクト*](https://www.w3.org/TR/html5/infrastructure.html#transferable-objects)です:ウェブワーカーとの間で転記する行為は、コンテキストを送信し、受信コンテキストがそれを使用できるようにします。キャンバスが移転可能かどうか、またはその画像データだけがすぐにはわかりません。 –

関連する問題