您现在的位置是:网站首页> 编程资料编程资料
浅谈Html5多线程开发之WebWorkersHTML5新特性 多线程(Worker SharedWorker)HTML5 Web Workers之网站也能多线程的实现
2021-08-31
1079人已围观
简介 这篇文章主要介绍了浅谈Html5多线程开发之WebWorkers的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
我们都知道,浏览器执行js代码是单线程的,当页面脚步执行时,页面是没办法响应别的的,直到脚步的结束,而这里介绍的WebWorkers就可以改变这一切。
WebWorkers是运行在后台的js代码,独立于其他脚本,不会影响页面的性能。我们可以继续做任何愿意做的事情:点击、选取内容等等,而此时WebWorkers在后台运行。
所有主流浏览器均支持 web worker,除了 Internet Explorer。
第一步:生成worker。
调用Worker()构造函数,指定一个要在worker线程内运行的脚本的URI,例子是当前页面指定worker线程执行的脚步为script-worker.js。
var myWorker = new Worker("script-worker.js");在script-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.onerror=function(oEvent){};可以监听worker发生错误。
第三步:重要几点。
worker线程能够在不干扰UI的情况下执行任务,所执行的JavaScript代码完全在另一个作用域,与当前网页中的代码不共享作用域。
Worker的全局作用域中提供了importScripts()方法,接收一个或多个指向JavaScript文件的URL,加载过程都是异步进行。
importScripts()只会在您提供绝对URI的情况下生效,执行过程也是异步的。
当我们创建WebWorkers对象后,它会继续监听消息(即使在外部脚本完成之后)直到其被终止为止,使用myWorker.terminate()方法可以终止WebWorkers,并释放浏览器/计算机资源。
第四步:重要限制。
1.无法访问DOM节点,无法访问全局变量或是全局函数,法调用alert()或者confirm之类的函数和无法访问window、document之类的浏览器全局变量;
2.不过Web Worker中的Javascript依然可以使用setTimeout(),setInterval()之类的函数,也可以使用XMLHttpRequest对象来做Ajax通信。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- html5的input的required使用中遇到的问题及解决方法HTML5表单验证特性(知识点小结)html5自带表单验证体验优化及提示气泡修改功能HTML5 表单验证失败的提示语问题使用HTML5和CSS3表单验证功能HTML5实现表单自动验证功能实例代码HTML5利用约束验证API来检查表单的输入数据的代码实例html5中valid、invalid、required的定义wordpress添加Html5的表单验证required方法小结
- HTML5 input新增type属性color颜色拾取器的实例代码HTML5中input[type='date']自定义样式与日历校验功能的实现代码html5中去掉input type date默认样式的方法
- html5中audio支持音频格式的解决方法HTML5实现音频和视频嵌入的方法详解移动端HTML5音频与视频问题及解决方案HTML5中视频音频的使用详解HTML5制作酷炫音频播放器插件图文教程HTML5自定义mp3播放器源码
- HTML5实现音频和视频嵌入的方法html5中audio支持音频格式的解决方法详解移动端HTML5音频与视频问题及解决方案HTML5中视频音频的使用详解HTML5制作酷炫音频播放器插件图文教程HTML5自定义mp3播放器源码
- canvas学习和滤镜实现代码用canvas实现图片滤镜效果附演示Canvas系列之滤镜效果
- 移动端Html5页面生成图片解决方案
- canvas实现二维码和图片合成的示例代码canvas 下载二维码和图片加水印的方法
- HTML5拖拽功能实现的拼图游戏HTML5实现拖拽互动改变元素颜色特效html5拖拽应用记录及注意点基于Html5实现的react拖拽排序组件示例html5 拖拽及用 js 实现拖拽功能的示例代码
- Html5页面二次分享的实现html5调用app分享功能示例(WebViewJavascriptBridge)微信端html5页面调用分享接口示例HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
- 利用Storage Event实现页面间通信的示例代码html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
