Web Workers

在项目中有时会遇到这种情况,在客户端需要处理计算量很大的脚本时,会导致页面的卡死,时间长了浏览器还会弹出提示是否继续运行脚本,这样用户的体验就会很差,需要等待脚本执行完后才能执行后续的操作,HTML5的Web Workers 可以在客户端后台创建多个进程来处理这些任务,这样前端页面不会影响用户的使用,同时也可以利用用户的多核CPU来处理繁重的计算任务而不用加重服务器端的压力。
下面是一个简单的web workers的例子
检测浏览器是否支持Web Workers

if (typeof(Worker) != "undefined"){
    console.log("supports Web Workers");
}
else{
    console.log("not supports Web Workers");
}

html中的JS部分

function load(){
    var worker = new Worker("js/work.js");
    worker.addEventListener("message", function (e)
    {
        console.log("接收到的信息:" + e.data);
    }, true);
    worker.postMessage("传给worker的数据");
}
document.addEventListener("load", load, true);

workers中的JS部分

addEventListener("message", function (e){
    console.log(e.data);
    var j = 0;
    for (var i = 0; i < 100000000000000000; i++){
        j = j + 1;
    }
    postMessage("传回来的数据");
}, true);

这样后台workers在执行循环计算工作,前端html还是可以正常访问,当后台计算完成之后会将计算结果传回前端页面

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,856评论 25 709
  • 1.JS单线程 说起Web Workers,首先必须了解因为JS运行在浏览器中,是单线程的,每个window一个J...
    RossWen阅读 3,770评论 1 11
  • JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那...
    梦很想家阅读 3,805评论 0 0
  • 在朋友的面前,他们觉得我人缘好的人, 但我并不怎么认为我的人缘好,因为我的真心朋友却没有几个,而唯一了解我的,...
    strongqd阅读 4,850评论 0 1
  • 相比较这部话剧的观后感,关于这个话剧周边话题更值得一说,先来说说为啥选这部话剧来看,那也挺巧合的!或者说...
    Una520阅读 1,891评论 0 1