博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebWorker初体验
阅读量:6442 次
发布时间:2019-06-23

本文共 1111 字,大约阅读时间需要 3 分钟。

hot3.png

什么是 Web Worker?

WebWorker允许开发人员编写能够长时间运行而不被用户所中断的后台程序, 去执行事务或者逻辑,并同时保证页面对用户的及时响应。每个WebWorker执行都称为一个线程,彼此间互相独立,并且由浏览器中的 JavaScript 引擎负责管理。

创建 Web Worker

使用Worker()构造函数长创建Web Worker。如下所示

var worker = new Worker("js/worker.js");

将Worker中运行的JavaScript脚本的URL传递给该构造函数。

URL采用相对路径,则以包含调用Worker()构造函数脚本的文档的URL为参照的。

URL采用绝对路径,则必须和包含该脚本的文档时同源的

主线程的JS和Web Worker通信

先看下面的例子。

主脚本

//main.jsvar worker = new Worker("js/worker.js");worker.onmessage = function(e){    console.log(e.data);}//向worker Post消息worker.postMessage("Post Message Form Main Threand.")

worker.js

//worker.jsonmessage = function(e){    console.log(e.data);    //向main.js  Post消息    postMessage("Worker has received the message")}

mian.js通过onmessage事件监听worker的消息,通过postMessage向worker发送消息。

当mian.js通过postMessage发送消息时,将触发worker的onmessage事件。反之worker调用postMessage,则会触发main.js中的onmessage事件。

使用Web Worker遇到的问题总结

  1. Uncaught SecurityError: Failed to construct 'Worker': Script at‘URL’ cannot be accessed from origin 'null'.

    解决:HTML放到服务器端就OK了 

   2. 调试worker.js

    解决:Chorome  F12 打开开发工具,在Sources面板中右栏中找到Workers,勾选Pause on start

转载于:https://my.oschina.net/sevenhdu/blog/289171

你可能感兴趣的文章
mybatis模仿1之我先看看
查看>>
记一次小程序之旅
查看>>
【跃迁之路】【539天】刻意练习系列298(2018.07.29)
查看>>
撸个简单的MVVM框架
查看>>
css3 动画(三)animation 简介
查看>>
npm包的发布与删除
查看>>
[LeetCode] Encode and Decode Strings
查看>>
JAVA多线程与并发学习总结
查看>>
精读《React 八种条件渲染》
查看>>
一个正则表达式引发的血案,让线上CPU100%异常!
查看>>
小程序二维码规则设置
查看>>
Unity3D - 巡逻兵
查看>>
通过一个简单的注册功能来理解测试驱动开发
查看>>
php 必备linux环境搭建
查看>>
Elasticsearch 参考指南(目录)
查看>>
H5之title吸顶功能
查看>>
我在菊场这一年
查看>>
C++入门教程(20):变量、不变量和常量
查看>>
vue2.0学习笔记(七):深刻理解Vue中的组件(2)--进阶篇
查看>>
React-Router路由跳转时render触发两次的情况
查看>>