web-dev-qa-db-ja.com

サービスワーカーで実行できることと実行できないことにはどのような制限がありますか?

さらに Safari iOSでService Workerからhttpポーリングまたはsocket.ioを使用できますか? Service Workerで実行できることと実行できないことのリストは何ですか?上記の回答では、「...サーバーへの接続を開くことはできません」とありますが、その事実はどこに文書化されており、制限はどのように適用されますか?

たとえば、特定のブラウザーAPIはService Workerで使用できませんか?または、長時間実行プロセスを妨げる実行割り当てがありますか?

例えば。サービスワーカーが... setInterval (()=>{console.log('foo'), 1000})を持っている場合、例外をスローしますか?実行して失敗しますか?動作はブラウザに依存していますか?

11
pinoyyid

service worker は、別のスレッドではなく、非常に特定の種類のスレッドです。のように、ネットワークとリソースのフェッチ要求をインターセプトし、それを使って何かを行うことを意図しています。最も基本的な形式では、ネットワークが利用できない場合にキャッシュしますが、要求されたものとは異なるリソース、古いバージョン、プレースホルダーなどを返すこともできます。

例えば。サービスワーカーに... setInterval (()=>{console.log('foo'), 1000})がある場合、例外がスローされますか?実行して失敗しますか?動作はブラウザに依存していますか?

それはおそらく動作します。ただし、DOMにアクセスできず、ユーザーと直接やり取りすることもできないため、これを行う意味はほとんどありません。ほとんどの場合、エラーと警告を出力できますが、インターバルポーリングが必要な警告はわかりません。

質問から、メインスレッドをブロックせずにバックグラウンド作業を実行しようとしているようです。その場合、より一般的なタイプ( Worker API )がお勧めです。

0
Adnan Y