美文网首页
Web工人?

Web工人?

作者: moyahuang | 来源:发表于2020-03-17 22:53 被阅读0次

    Web工人?

    众所周知,javascript是单线程语言(为什么)。web worker可以在后台开启浏览器除GUI渲染线程、JS引擎线程、事件处理线程、定时器线程以及HTTP请求线程的新的线程,新的线程在后台进行相应的逻辑处理后再传回到主线程。这对于包含大量可能影响页面加载的计算代码的意义非常大。

    专用worker实现方法

    要点:

    1. worker的处理逻辑在一个专用的js编辑,数据的传递postmessage和接收onmessage使用方法类似方法

    2. worker的实例化,例iWorker,使用new Worker('上述.js')

    3. 主线程数据的传递postmessage和接收onmessage都得挂载到worker的实例化对象iWorker

    4. 参数是一个数组,数据的获取方法e.data[0]...

    如何立即关闭worker?

    主线程中使用iWorker.terminate(),或者在worker.js中调用方法close()

    注意点

    web worker仍然是比较新的API,所以不管是主线程还是worker.js中都最好检查Worker是否定义。如下:

    if(Worker){...}else{...}
    

    20-03-12------------

    SharedWorker今天尝试的时候碰到一个坑,在worker.js中不要加上述的if-else验证,否则worker无效。

    参考链接

    https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers

    相关文章

      网友评论

          本文标题:Web工人?

          本文链接:https://www.haomeiwen.com/subject/yecfyhtx.html