首页 > 作文

浅谈Html5多线程开发之WebWorkers

更新时间:2023-04-06 10:27:41 阅读: 评论:0

我们都知道,浏览器执行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 = ftaste的过去式unction (oevent) {    console.log("主页面发送过来的数据是:"+oevent.data));    };

上面是【主页面发送数据给worker脚本】的情况,是的,你看见了非常亲切的postm关于老师的词语essage,好吧,我喜欢这个东西。

 //[主页面代码] myworker.onmessage = function (oevent) {      console.log("worker脚本发送过来的数据是:"+oevent.data));      }; //[worker代码]postmessage("data-from-mainpage");

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

此外,可能work涂磊微博er执行会出错,主页面通过:

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依然可以使用ttimeout(),tinterval()之类的函数,也可以使用xmlhttprequest对象来做ajax通信。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 10:27:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/25676f1be266b951301788a85019d28e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:浅谈Html5多线程开发之WebWorkers.doc

本文 PDF 下载地址:浅谈Html5多线程开发之WebWorkers.pdf

标签:代码   页面   脚本   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图