博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
html5多线程例子,小猿圈浅谈HTML5多线程开发之WebWorkers
阅读量:5299 次
发布时间:2019-06-14

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

原标题:小猿圈浅谈HTML5多线程开发之WebWorkers

现在大多数学习前端的小伙伴都在迷茫一个问题,当遇到自己决绝不了的问题怎么办?这些也是小猿圈web前端讲师担心的,以后每天小猿圈都会为大家分享一些关于学习前端中的一些知识点,今天分享的是HTML5多线程开发之WebWorkers。

076ac64e60841813499d77ed3f8538b8.png

WebWorkers是运行在后台的js代码,独立于其他脚本,不会影响页面的性能。我们可以继续做任何愿意做的事情:点击、选取内容等等,而此时WebWorkers在后台运行。

所有主流浏览器均支持web worker,除了Internet Explorer。

第一步:生成worker。

调用Worker()构造函数,指定一个要在worker线程内运行的脚本的URI,例子是当前页面指定worker线程执行的脚步为-worker.js。

var myWorker = new Worker("-worker.js");

在-worker.js里面我们可以执行额外的代码,这些代码的执行不会影响页面去干别的你想干的事情,这听起来很棒。

第二步:传递数据。

页面可以和worker交互传递数据,这样worker在不影响页面干有意义的事情的情况下可以默默去计算,好了告诉一下页面,使用这些数据。

//[主页面代码]

myWorker.postMessage("data-from-mainpage");

//[worker代码]

onmessage = function (oEvent) {

console.log("主页面发送过来的数据是:"+oEvent.data));

};

上面是【主页面发送数据给worker脚本】的情况,是的,你看见了非常亲切的postMessage。

//[主页面代码]

myWorker.onmessage = function (oEvent) {

console.log("worker脚本发送过来的数据是:"+oEvent.data));

};

//[worker代码]

postMessage("data-from-mainpage");

上面是【worker脚本发送数据给主页面】的情况,依旧很简单,不过这些只是API,关键在于巧妙的使用才是有益的。

此外,可能worker执行会出错,主页面通过:

myWorker.=function(oEvent){};

可以监听worker发生错误。

第三步:重要几点。

worker线程能够在不干扰UI的情况下执行任务,所执行的Java代码完全在另一个作用域,与当前网页中的代码不共享作用域。

Worker的全局作用域中提供了imports()方法,接收一个或多个指向Java文件的URL,加载过程都是异步进行。

imports()只会在您提供绝对URI的情况下生效,执行过程也是异步的。

当我们创建WebWorkers对象后,它会继续监听消息(即使在外部脚本完成之后)直到其被终止为止,使用myWorker.terminate()方法可以终止WebWorkers,并释放浏览器/计算机资源。

第四步:重要限制。

1、无法访问DOM节点,无法访问全局变量或是全局函数,法调用alert()或者confirm之类的函数和无法访问window、document之类的浏览器全局变量;

2、不过Web Worker中的Java依然可以使用setTimeout(),setInterval()之类的函数,也可以使用对象来做Ajax通信。

今天的知识点就分享到这里了,有需要的朋友欢迎点赞评论转发,想了解更对web前端内容的朋友可以关注小猿圈的每天的动态,会不定时更新很多更好的内容奉献给大家web前端自学②群:738735873,希望对你的学习有所帮助。返回搜狐,查看更多

责任编辑:

转载地址:http://umdqv.baihongyu.com/

你可能感兴趣的文章
微服务核心20讲 读书笔记
查看>>
努力有什么用
查看>>
nginx_tomcat
查看>>
WEB前端面试题查询整理
查看>>
【CodeForces - 598D】Igor In the Museum(bfs)
查看>>
Spark-Mllib中各分类算法的java实现(简易教程)
查看>>
给你的HTTPS添加Let's Encrypt证书
查看>>
2014年总结
查看>>
图解分析mochiweb web server
查看>>
netstat 2
查看>>
as3.0 [Embed]标签嵌入外部资源
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
ssh中文乱码解决
查看>>
Day1:初识Python
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
[Python设计模式] 第11章 迪米特法则——最少知识原则
查看>>
社交网站怎么利用好等级制度
查看>>
修改博客园css样式
查看>>