H5的多线程如何实现Web Worker

很多人问过我,h5的多线程如何实现web worker的?当我们说到这个问题的时候首先你需要知道,什么是web worker,那么今天就来给大家解答下这个问题。

将JavaScript代码交给Web Worker在后台执行时,页面就可以在JavaScript运行期间依然可以响应用户操作,以防止出现页面卡死。用户可以创建多个Worker线程,这样就可以在前台做一些小规模分布式计算之类的工作。

分布式计算是一种计算方法,和集中式计算是相对的。随着计算基数的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

而我上面所说的小规模分布式计算是对CPU多核的高效利用。

线程中不能做的事情:

Web Worker无法访问DOM节点 不能共享DOM是正常的,否则这边在操作DOM,Worker那边也在操作DOM,甚至把DOM删除了,这不是冲突了嘛? Web Worker无法访问全局变量或是全局函数 Web Worker无法调用alert()或者confirm之类的函数 Web Worker无法访问window、document之类的浏览器全局变量

线程中能做的事情: 

能使用setTimeout()、clearTimeout()、setInterval()、clearInterval()等函数 能使用navigator对象 能使用XMLHttpRequest来发送请求 能使用Web Storage 能使用self获取本线程的作用域

Web Worker可分为两种类型:专用线程(dedicated web worker),共享线程(shared web worker)。专用线程只能被创建它的页面访问,随当前页面的关闭而结束;而共享线程可以被多个页面访问,只有当所有关联的页面都关闭的时候才会结束。相对专用线程,共享线程稍微复杂些。

检测浏览器对Web Worker的支

if(typeof(Worker)!=="undefined")  {      // Yes! Web worker support!  }  else  {      // Sorry! No Web Worker support..  }

创建Web Worker对象及文件:

下面估计是最简单的入门级别的JS多线程Demo:

这里写图片描述

创建线程

var worker = new Worker(url);//url为需要在线程中执行的JavaScript文件名及对应的路径

线程通信

在主线程与子线程间进行通信,使用的是线程对象的postMessage和onmessage方法。不管是谁向谁发送数据,发送方使用的都是postMessage方法,接收方都是使用的onmessage方法接收数据。postMessage和onmessage都只有一个参数,假定onmessage的参数为event,则通过event.data获取收到的数据。

销毁线程

在线程外部,使用线程实例的terminate方法销毁线程 在线程内部,使用close方法,线程自己销毁自己

处理错误

当线程发生错误的时候,它的onerror事件回调会被调用。

var worker = new Worker("test.js");worker.onerror = function(event){    console.log("load web worker error." + event);}

发送JSON数据

复杂的数据就用JSON传送吧!

Web Worker中使用importScripts加载外部JS

在HTML页面中,使用

标签加载外部的JS文件,而标签还支持 跨域 加载JS。

在Web Worker中要注意! 

Worker实例化的时候必须传入一个脚本的URL,而这个URL必须是在本域下,否则会报跨域错误! var worker = new Worker(‘https://localhost/worker.js’); 

但可以在worker.js中通过importScripts方法引入任何域下的脚本,如同HTML中的标签一样。下面是合法的使用方法:

importScripts(); /* imports nothing */ importScripts(‘foo.js’); /* imports just “foo.js” */ importScripts(‘foo.js’, ‘bar.js’); /* imports two scripts */ importScripts(‘//example.com/hello.js’); /* You can import scripts from other origins */可以利用这里的importScripts方法解决资源预加载的问题(浏览器预先加载资源,而不会对资源进行解析和执行),道理也很简单。Scripts may be downloaded in any order, but will be executed in the order in which you pass the filenames into importScripts() . This is done synchronously; importScripts() does not return until all the scripts have been loaded and executed.

相信看了这些案例你已经掌握了方法,更多精彩请关注创想鸟其它相关文章!

相关阅读:

html5中的DOM编程的实现步骤

用h5做出微信的支付过程的实现步骤

用H5做有特效的下拉框

以上就是H5的多线程如何实现Web Worker的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 16:55:16
下一篇 2025年12月21日 16:55:33

相关推荐

  • h5里js和servlet实现文件上传的实现步骤

    这次教大家的是在h5里如何用js和servlet来实现文件上传,不过有一个前提条件,必须要是h5和jsp3.0版本,因为用到了新属性,获取file对象和后台得到part对象。 下面给大家看一个案列 前台jsp Insert title here name: 文件: 提交 function btu()…

    好文分享 2025年12月21日
    000
  • H5做出手机摇一摇功能的实现步骤

    今天教大家用html5来在网页里实现一个很炫酷的功能,手机摇一摇。如果你之前做过手机端的开发,可能对于这样的功能非常了解。但是下面,我们将在web上首次实现这个功能。 方向事件deviceorientation 该事件实在设备方向发生变化时触发, 使用方法如下; window.addEventLis…

    好文分享 2025年12月21日
    000
  • H5中的弹窗无法用webview弹出怎么解决

    我们偶尔会用到这样一种bug,虽然使用了webview,但是还无法吊起h5中的弹窗。那么怎么解决这个问题呢?我们来看一下。 问题: webview无法吊起H5中的弹窗。 解决方法: 如果是fragment,必须使用getactivity()上下文,不能用全家上下文,否则无法弹窗。 mWebView.…

    好文分享 2025年12月21日
    000
  • html5制作转盘的详解及实例

    今天给大家带来的案列是html5转盘实例,可以直接拿来做抽奖程序,有需要的朋友可以拿去使用,下面是案列代码。 html5制作转盘游戏 h1{ width: 100%; height: 3rem; line-height: 3rem; font-size: 1.8rem; color:#c60; te…

    好文分享 2025年12月21日
    000
  • HTML5中的progress元素的详细介绍及兼容性处理

    本篇文章主要为大家介绍,progress元素的基本属性以及兼容性处理。介绍完progress元素后,下面一个案列也帮助大家更好的理解,一起来看一下。、 一、progress元素基本了解 1.基本UI progress元素属于HTML5家族,指进度条。IE10+以及其他靠谱浏览器都支持。如下简单cod…

    好文分享 2025年12月21日
    000
  • 浏览器兼容HTML5和CSS3的问题

     html5和css3是非常好用并且功能强大的新属性,唯一的重大缺陷就是可能很多旧版浏览器不兼容,今天就给大家分享一下关于旧版的浏览器兼容html5和css3的问题。 1.让老式浏览器支持HTML5  HTML5能为我们做的事儿很多,最为可口的就是语义化标签的应用,如果你已经在Chrome或者其他支…

    好文分享 2025年12月21日
    000
  • H5里的postMessage API图文详解 详细介绍

    关于postmessage,虽然说是html5的功能但是支持ie8+,假如你的网站不需要支持ie6和ie7,那么可以使用window.postmessage。既可以跨域传递,也可以同域传递。 我只是简单的举一个应用场景,当然,这个功能很多地方可以使用。 假如你有一个页面,页面中拿到部分用户信息,点击…

    好文分享 2025年12月21日
    000
  • HTML5标签嵌套规则的详细介绍

    下面给大家带来一份html5标签嵌套规则的详细介绍,总结归纳的非常不错,值得大家作为参考,一起来看一下。 [1]分类 [2]子元素 [3]总结 前面的话   在html5中,元素的子元素可以是块级元素,这在以前是被认为不符合规则的。本文将详细介绍html5的标签嵌套规则 分类   html5出现之前…

    好文分享 2025年12月21日
    000
  • 用H5制作烟花粒子特效的制作方法

    这次给大家带来用h5制作烟花粒子特效的制作方法,怎么用h5制作特效?h5制作烟花粒子特效的流程,h5制作烟花粒子特效的注意事项有哪些,一起来看一下。 Canvas烟花粒子特效制作 Canvas is not supported by your browser. Css部分:* { margin: 0…

    好文分享 2025年12月21日
    000
  • 用H5制作水滴特效教程

    给大家带来用h5制作h5制作水滴特效教程,怎么用h5制作特效?h5制作水滴特效的流程,h5制作水滴特效的注意事项有哪些,一起来看一下。 利用canvas 画布制作逼真的水滴特效 /* NOTE: The styles were added inline because Prefixfree need…

    好文分享 2025年12月21日
    000
  • 用H5和CSS3制作全屏背景轮换播放教程

    这次给大家带来用h5和css3制作全屏背景轮换播放的制作方法,怎么用h5制作特效?h5和css3在使用过程中的注意事项有哪些,下面就是实战案例,一起来看一下。 全屏背景轮换播放 #bg{ position:fixed; top:0; left:0; bottom:0; right:0; z-inde…

    好文分享 2025年12月21日
    000
  • HTML5响应式banner制作教程

    这次给大家带来用html5响应式banner制作方法,怎么用h5制作特效?html5响应式banner的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML5响应式banner MULTIPURPOSE THEME CRAS JUSTO ODIO, DAPIBUS AC FACILISIS R…

    好文分享 2025年12月21日
    000
  • HTML5视频音频实现步骤

    我们知道,常见的视频格式的组成部分有:画面、音频、编码格式,常见的音频格式有音频编码:acc、mp3、vorbis,在html5里,支持的视频格式有三种,今天就来说一下html5视频音频实现步骤 HTML5支持的视频格式:          Ogg=带有Theora视频编码+Vorbis音频编码的O…

    好文分享 2025年12月21日
    000
  • HTML5的新增了哪些标签元素

    大家知道h5新增了不少的元素标签,那么我们就给大家总结归纳一下,h5增加了哪些标签?这些标签都有什么作用。 Input  type=“XXX” Email 邮箱: 提示格式不正确 url   地址  :地址格式:http://www….. Number:数值型  立即学习“前端免费学习笔…

    好文分享 2025年12月21日
    000
  • HTML5里Canvas常用的绘图技巧

    在h5里我们会常用到canvas这个元素来绘制图形。那么我们今天就来介绍一下canvas怎么使用,canvas在哪些情形下可以使用。以及canvas的绘画技巧 canvas 用于在页面上 绘制图形 canvas概述: html5 canvas元素和javascript配合使用在页面上绘制图形 can…

    好文分享 2025年12月21日
    000
  • html5里交互元素的使用方法

    在h5里,交互元素就是和用户进行互动的元素,这一部分非常的重要,并且和之前的js控制的效果不同,h5相比于html增加了很多的交互元素,比如隐藏显示注脚就是其中的一个交互效果。 交互元素的使用 body{ font-size: 12px; } span{ font-weight: bold; } d…

    好文分享 2025年12月21日
    000
  • HTML5的标签元素怎么使用

    h5里面增加了一个 标签元素,那么我们要怎样使用呢?记得我们在html5版本以前布局网页底部版权时,都会习惯使用id=”footer”或class=”footer”来标记段落,但是在h5里有了这个标签之后,一切都简单了很多。 HTML5 标签元素 新增html5底部footer元素标签,对html …

    好文分享 2025年12月21日
    000
  • HTML5 标签怎么用

    这次我们来说一下对h5的footer标签,nav的基本语法和结构,nav配合什么标签使用,在什么情况下可以使用,帮助大家快速理解nav。 首先nav也是在html5中新增的元素标签。同时和其它新增标签一样,nav在传统html5以前版本Html布局中作为导航条相关常用命名来使用。 比如: 网站导航内…

    好文分享 2025年12月21日
    000
  • 怎样知道浏览器支不支持html5

    随着html5的技术的推广,现在全世界的开发人员几乎都在用h5建设自己的网站,但是这就出来了一个很大的弊端,有的老版本浏览器是不支持h5的,那我们怎么分别哪些支持哪些不支持呢?今天就给大家分享一个办法。 支持html5的浏览器; (1)Chrome,Firefox:支持html5很多年,而且有自动升…

    好文分享 2025年12月21日
    000
  • HTML5文字弹幕效果

    html5文字弹幕效果,挺有意思的,对html5感兴趣拿去研究,学习学习html5. 实现演示: 代码演示: PHP中文网–HTML5文字弹幕效果代码*{margin:0;padding:0;list-style: none;border:0;}body{background: #bcbcbc;}…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信