Web工作者内的服务工作者

时间:2015-08-27 13:49:00

标签: web-worker service-worker

实现可以使用服务工作者处理网络调用的webworker的正确方法是什么。例如

  • 我有一个index.html文件,它有自己的渲染数据逻辑
  • 然后,此Web工作人员负责发送需要的数据 渲染并触发渲染过程
  • 网络工作者将使用 服务工作者用于获取和缓存网络请求/ json 数据。

2 个答案:

答案 0 :(得分:2)

网络工作者和服务工作者实际上是独立的。

如果您有一个服务工作者控制特定页面,那么源自该页面的任何HTTP请求或该页面上使用的Web工作者将触发该服务工作者的fetch事件。这适用于来自Web工作者的fetch()XMLHttpRequest触发的HTTP请求。网络工作者不需要事先“了解”服务工作者或任何事情。

请注意,服务工作者可以像Web工作人员一样发送和响应message事件,这样您就可以完全消除Web工作者并将所有逻辑移动到服务工作者身上。但这取决于您的Web工作者究竟在做什么,以及您希望为支持Web工作者但尚未支持服务工作者的浏览器提供何种级别的支持。

答案 1 :(得分:0)

服务人员的寿命有限。浏览器积极地卸载服务工作者,这就是处理程序中存在<!DOCTYPE html> <html> <head> <title>The Watershed</title> <link rel="stylesheet" type="text/css" href="watershed.css"> </head> <body> <div id="left"> <nav> <div class="logo"> <a href="#home"><img src="logo.png"></a> </h4> </div> <ul> <li><a href="#home" class="">&nbsp;&nbsp;HOME</a></li> <li><a href="#about" class="">&nbsp;&nbsp;ABOUT</a></li> <li><a href="#menu" class="">&nbsp;&nbsp;MENU</a></li> <li><a href="#contact" class="">&nbsp;&nbsp;CONTACT</a></li> </ul> </nav> </div> </div> <div id="right"> <div id="container"> <div class="content"> <div class="section"> <h1><a name="home">HOME</a></h1> <p>Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis. </p> </p> </div> <div class="section"> <h1><a name="about">ABOUT US</a></h1> <p>Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis. </p> </p> </div> <div class="section"> <h1><a name="menu">MENU</a></h1> <p>Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis. </p> <div id="image"><img src="be.jpg" class="bacon" alt="bacon and eggs"> <img src="cs.jpg" class="club" alt="club sandwich"> <img src="hu.jpg" class="pork" alt="humba"></div> </div> <div class="section"> <h1><a name="contact">CONTACT</a></h1> <p>Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis.Lorem ipsum dolor sit amet, consecteture adipscing elit. Sispendise non velit felis. Vestiblum eget orci. Preasent sit amet porta eros. Nam ullamcorper lacina mi ac laculis. </p> </p> </div> </div> </div> </div> </div> </body> </html>的原因(虽然这只是一个请求,浏览器仍然可以杀死它)

对于规范服务工作者使用这是可以的,但是如果你想要一个长时间运行的并行进程,你需要一个(Web)工作者。