2017-05-20 10 views
0

サービスワーカーのMDNドキュメントで次のような行があります。 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API勤務中の従業員の使用。それはそれは完全に非同期になるように設計されてサービスワーカーのアーキテクチャ

サービスワーカー内部アクセスできないローカルストレージを引き起こしているとは何

。結果として、同期XHRやlocalStorageなどのAPIをサービスワーカー内で使用することはできません。

+0

'localStorage'と' sessionStorage'はwebworkerプロセスでは定義されていません。ここをクリックhttp://stackoverflow.com/a/6179599/1741671 –

+0

はいウェブワーカーはDedicatedWorkerGlobalScope(つまりコンテキスト)で実行されるため、これらは定義されていません。これは、通常のコンテキストウィンドウとは異なります。これが理由かもしれません。 –

+0

しかし、ドキュメンテーション、「完全に非同期になるように設計されている」理由は、localWorkspaceをServiceWorkerGlobalScopeの内部で使用できないようにするために、 –

答えて

1

ファイルシステム(またはネットワーク)にアクセスする同期APIは、不定期にサービスワーカーのスレッドをブロックする可能性があります。これにより、サービスワーカーが同期操作が完了するのを待っている間に、他のイベントに応答するなどの便利な作業を行うことができなくなる可能性があります。

LocalStorage APIのdocumentationを見ると、すべてのメソッド(setItemgetItemなど)が同期していることがわかります。それらが非同期だった場合、IndexedDB APIのようなコールバックを取るか、Cache Storage APIのようにPromiseを返します。

サービス・ワーカーでは、IndexedDBとCache Storage APIの両方を使用できます。

関連する問題