H5+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通讯。
信赖看了本案牍例你已经把握了办法,更多出色请关注百分百源码网其它相关文章!
引荐阅读:
webpack打包紧缩js与css步骤详解
jquery fullpage插件增加头部与尾部版权相关
以上就是H5+WebWorkers多线程开发使用详解的具体内容,更多请关注百分百源码网其它相关文章!