【转】《高级前端3.6》JavaScript多线程——Concurrent.Thread.js, WebWork

原文链接:http://www.cnblogs.com/woodk/articles/5199536.html

JavaScript多线程,在HTML5 WebWork没出现之前很多人都是用ConcurrentThread.js模拟多线程。

通常,我们也会用setInterval和setTimeout来模拟多线程。

多线程的概念介绍

浏览器事件触发线程,ajax,setTimeout,setInterval都会被放入最后面的一个程序池。

Concurrent.Thread.js

Concurrent.Thread.js是一个日本人开发的,用来让javascript也进行多线程开发的包,可以让我们将耗时的任务利用前端来模拟多线程。

下载地址:http://download.csdn.net/download/include_define/796952

教程文档:http://www.cnblogs.com/0banana0/archive/2011/06/01/2067402.html

下面我们试一下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3
 4 <head>
 5     <meta charset="UTF-8">
 6     <title>JavaScript多线程</title>
 7     <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
 8     <script type="text/javascript" src="Concurrent.Thread.js"></script>
 9     <style type="text/css">
10     div {
11         width: 100px;
12         height: 100px;
13         cursor: pointer;
14         background: orange;
15     }
16     </style>
17 </head>
18
19 <body>
20     <div id="test">
21         测试点击
22     </div>
23     <script type="text/javascript">
24     Concurrent.Thread.create(function() {
25         $(‘#test‘).click(function() {
26             alert(1);
27         });
28         /*下面有一段特别复杂的函数*/
29         for (var i = 0; i < 10000; i++) {
30             console.log(i);
31         }
32     });
33     </script>
34 </body>
35
36 </html>

可以发现,div能在打印i的时候正常响应了,非常牛掰的一个库~~

WebWork

WebWork 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

注意:dom是不能被异步操作的! WebWork不能在本地使用

HTML5之WebWork使用方法http://www.cnblogs.com/yxlblogs/p/3896786.html

webwork.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>JavaScript多线程</title>
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <style type="text/css">
    div {
        width: 100px;
        height: 100px;
        cursor: pointer;
        background: orange;
    }
    </style>
</head>

<body>
    <div id="test">
        测试点击
    </div>

    <script type="text/javascript">
    $(‘#test‘).click(function() {
        alert(1);
    });

    var worker = new Worker("task.js");
    worker.onmessage = function(event) {
        // 消息文本放置在data属性中,
        // oBox.innerHTML = event.data;
        alert(event.data);
    }
    worker.postMessage(500000);
    </script>
</body>

</html>

task.js

onmessage = function(event) {
    var num = event.data;
    var result = 0;
    for (var i = 0; i < num; i++) {
        result += i;
        console.log(result);
    }

    // 向线程创建源送回消息
    postMessage(result);
}
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
时间: 2024-10-06 03:03:44

【转】《高级前端3.6》JavaScript多线程——Concurrent.Thread.js, WebWork的相关文章

javascript实现多线程 Concurrent.Thread.js

在这次我的项目中,因为前端要检测硬件加载并识别,再向后台请求发送数据,然后再返回的相应的配置文件!在这过程,要好时好几秒钟,严重影响体验效果,所以在网上靠看的方案,运用多线程去处理,这效果明显改善! 在这同步检测过程,效果就如for循环一个很大数字(模仿复杂的逻辑代码运算),卡在哪里,导致不了其他的操作! 大家可以先不用这库,测试一下如下代码看看效果: 1 <script> 2 var btn = document.querySelector('.clickBtn'); 3 btn.addEv

JavaScript 编写多线程代码引用Concurrent.Thread.js(转)

这是一个很简单的功能实现: <script type="text/javascript" src="Concurrent.Thread.js"></script> <script type="text/javascript"> Concurrent.Thread.create(function(){ var i = 0; while ( 1 ) { document.body.innerHTML += i++

Concurrent.Thread.js

(function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'function') ) this.Data = new Object(); if ( this.Data.Stack === undefined ) this.Data.Stack = undefined; with ( function(){ with ( Data ) { return function () {

JavaScript多线程初步学习

一.多线程理解 首先,我们要理解什么是多线程,百度百科上说:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系统包括对称多处理机.多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器.[1]  在一个程序中,这些独立运行的程序片段叫作“线程”(

JavaScript多线程

Concurrent.Thread.js http://www.cnblogs.com/0banana0/archive/2011/06/01/2067402.html WebWork http://www.cnblogs.com/couxiaozi1983/p/3799898.html

【前端安全】JavaScript防http劫持与XSS 转

[前端安全]JavaScript防http劫持与XSS 作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源

【前端安全】JavaScript防http劫持与XSS

作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting)CSRF>跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源码的暴露,攻击者很容易绕过我们的防御手段.但是这不代表我

前端html、Javascript、CSS技术小结

简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页,只需要找找内部是否有html5的标志性标签就行了.然而平时虽然写了不少html,却没怎么关注它的发展史: GML(Generalized Marcup Language)通用标记语言 和SGML(Standard Generalized Markup Language)标准通用标记语言. 由Tim

JS高级前端开发群加群说明

JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这样的成绩或这样一个结果也是情理之中,一方面来说,提倡的各种交流沟通方法大部分是正确有效或被大家认可的,另外一方面说,这么多人聚在一起,跟大伙的参与分享是分不开的,尤其是各群的管理,是我们的灵魂精神的支柱.另外在国内行业前进的道路上,尽自己的绵薄之力帮助他人,引领氛围,进而影响行业,也是略感欣慰.有时候精