6

Service Workers を使用して最初のアプリを作成しており、pushManager と対話するために登録を取得しようとしています。

次のいずれかでこれを行うことができます。

nagivator.serviceWorker.getRegistration()

また

navigator.serviceWorker.ready.then()

どちらを使用する必要があり、違いは何ですか?

4

2 に答える 2

3

ready を使用すると、「返された promise が決して拒否されないように設計されているため、作業が簡単になります。代わりに、promise がアクティブなワーカーを持つ Service worker 登録で解決されるまで待機します」。( Service Worker 仕様の ready の定義を参照してください)。

これにより、Push API の subscribe メソッドを呼び出すときの失敗モードが少なくなります。

getRegistration() コンテキストからsubscribeを呼び出すと、いくつかの失敗モードが追加されます。

[...をちょきちょきと切る...]

  1. 登録にアクティブなワーカーがない場合は、次のサブステップを実行します。
    1. 登録にインストール中のワーカーも待機中のワーカーもない場合、「InvalidStateError」という名前の DOMException で promise を拒否し、これらの手順を終了します。
    2. 登録のインストールワーカーまたは待機ワーカーがアクティブワーカーになるのを待ちます。
    3. 登録がいずれかのワーカーのアクティブ化に失敗した場合、「InvalidStateError」という名前の DOMException で promise を拒否し、これらの手順を終了します。
    4. 登録にアクティブなワーカーが設定されたら、以下の手順に進みます。

[...をちょきちょきと切る...]

于 2015-03-02T09:05:28.620 に答える