首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >serviceWorker.getRegistration与serviceWorker.ready.then的区别

serviceWorker.getRegistration与serviceWorker.ready.then的区别
EN

Stack Overflow用户
提问于 2015-03-01 02:22:16
回答 2查看 3.6K关注 0票数 7

我正在与服务工作者一起编写我的第一个应用程序,并试图获得注册,以便与pushManager进行交互。

我可以用以下任何一种方法来做到这一点:

代码语言:javascript
复制
nagivator.serviceWorker.getRegistration()

代码语言:javascript
复制
navigator.serviceWorker.ready.then()

我应该使用哪一种,区别是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-01 16:40:44

据我所知,第一个不需要等到ServiceWorkerRegistration有一个活动的ServiceWorker。最后一个有。

票数 6
EN

Stack Overflow用户

发布于 2015-03-02 09:05:28

使用ready使事情变得更简单,因为它是“以一种返回的承诺永远不会拒绝的方式设计的。相反,它一直等到承诺与具有活动工作人员的服务工作者注册解决为止。”(请参阅Service规范中的就绪的定义 )。

反过来,在调用Push的订阅方法时,Wich将导致较少的失败模式。

从一个订阅 ()上下文调用getRegistration,会添加一些额外的失败模式:

...snip...

  1. 如果注册没有活动员工,请运行以下子步骤:
    1. 如果注册没有安装工人,也没有等待工作人员,请拒绝使用名称为“DOMException”的InvalidStateError承诺,并终止这些步骤。
    2. 等待已注册的安装工人或等待员工成为其活动工人。
    3. 如果注册无法激活任一工作人员,则拒绝使用名为“DOMException”的InvalidStateError承诺,并终止这些步骤。
    4. 一旦注册有一个活跃的工作人员,继续下面的步骤。

...snip...

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28789395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档