Web ワーカーとメイン スレッド間で大量のデータ (数 MB) を渡す方法はありますか? 私は、ファイルをダウンロードし、それらを少し変更してから、何らかの方法でユーザーに変更されたファイルをダウンロードさせる必要があるプロジェクトで作業しています。Web ワーカーとメイン UI の間でデータを渡す次の方法を見つけました。
- 通常の
postMessage
方法を使用します。 - 転送可能なオブジェクトの使用 (Chrome のみ)
- blob への URL 参照を作成し、その URL のみを送信します (Chrome でも動作しますが、他の環境でも動作しますか?)
(1)は小さいオブジェクトを送信する場合は問題ないと思いますが、シリアライズして JSON で送信するため、数 MB を超えるファイルを扱う場合は多くの時間とスペースが必要です。Chrome では、転送可能なオブジェクトを使用してデータを転送する方法が提供されており、データをコピーする必要はありません。残念ながら、これはこれまでのところ Chrome のみの機能であり、それ以外の場合は私の目的を果たしていました。
私が最後に見つけたのは、ワーカーから を使用して blob への URL を作成し、self.webkitURL
その URL 参照を UI に渡すことだけでした。これはうまく機能します。ユーザーに URL を提供すると、ユーザーはファイルをダウンロードできます。残念ながら、Firefox でこれを行う方法が見つかりませんでした。可能ですか?
ワーカーとメインスレッドの間でデータを転送するために使用できる他の方法はありますか?