我正在使用 Service Worker 编写我的第一个应用程序,并尝试获取注册以便与 pushManager 进行交互。
我可以使用以下任何一种方法来做到这一点:
nagivator.serviceWorker.getRegistration()
或者
navigator.serviceWorker.ready.then()
我应该使用哪个,有什么区别?
我正在使用 Service Worker 编写我的第一个应用程序,并尝试获取注册以便与 pushManager 进行交互。
我可以使用以下任何一种方法来做到这一点:
nagivator.serviceWorker.getRegistration()
或者
navigator.serviceWorker.ready.then()
我应该使用哪个,有什么区别?
据我所知,第一个不会等到 ServiceWorkerRegistration 有一个活动的 ServiceWorker。最后一个可以。
使用 ready 使事情变得更简单,因为它“设计为返回的承诺永远不会拒绝。相反,它会等到承诺通过具有活动工作人员的服务工作人员注册解决”。(参见Service Worker 规范中 ready 的定义)。
在调用 Push API 的 subscribe 方法时,这反过来会导致更少的失败模式。
从 getRegistration() 上下文调用subscribe会增加一些额外的失败模式:
[……剪断……]
[……剪断……]