原文链接: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);
}
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

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

  1. javascript实现多线程 Concurrent.Thread.js

    在这次我的项目中,因为前端要检测硬件加载并识别,再向后台请求发送数据,然后再返回的相应的配置文件!在这过程,要好时好几秒钟,严重影响体验效果,所以在网上靠看的方案,运用多线程去处理,这效果明显改善! ...

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

    这是一个很简单的功能实现: <script type="text/javascript" src="Concurrent.Thread.js">&l ...

  3. JavaScript 编写线程代码引用Concurrent.Thread.js

    马上来下载和使用源码吧!假定你已经将下载的源码保存到一个名为Concurrent.Thread.js的文件夹里,在进行任何操作之前,先运行如下程序,这是一个很简单的功能实现: <script t ...

  4. Concurrent.Thread.js

    (function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'functi ...

  5. 转载:JavaScript多线程编程简介

    虽然有越来越多的网站在应用AJAX技术进行开发,但是构建一个复杂的AJAX应用仍然是一个难题.造成这些困难的主要原因是什么呢?是与服务器的异步通信问题?还是GUI程序设计问题呢?通常这两项工作都是由桌 ...

  6. 前端常用的库和实用技术之JavaScript多线程

    多线程概念: 多线程是指从软件或硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在 同一时间执行多于一个线程,进而提升整理处理性能.具有这种能力的系统包括对称多处理机,多核心 ...

  7. javascript多线程简介

    讲多线程之前,我们先了解一下JS的事件机制 浏览器运行时,脚本必须定期让位给UI进程进行来维持网页的响应,闲置太长时间的脚本可能会被浏览器当成失控脚本,进而造成假死或弹窗 事件触发的设计javascr ...

  8. JavaScript多线程初步学习

    一.多线程理解 首先,我们要理解什么是多线程,百度百科上说:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一 ...

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

    作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过 ...

随机推荐

  1. UNIX发展史(BSD,GNU,linux)

    先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...

  2. ELK系列~nxlog实现多位置文件的收集

    前几天我写了几篇关于ELK日志收集,存储和分析的文章: ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd ELK系列~Nxlog日志收集加转发(解决log4日志 ...

  3. MongoDB聚合(count、distinct、group、MapReduce)

    1. count:返回集合中文档的数量. db.friend.count() db.friend.count({'age':24}) 增加查询条件会使count查询变慢. 2. distinct:找出 ...

  4. MongoDB正则表达式

    MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式. 1. 搜索包含某关键字的内容: db.posts.find({post_text:{$regex:"w3cschoo ...

  5. C语言编写一个简单游戏

    感悟:这算是一个起点吧,我都大二了,还这么菜,才开始写游戏,这个游戏很简单,利用随机数猜大小! #include <stdlib.h> #include <stdio.h> # ...

  6. Java微信公众平台开发_02_启用服务器配置

    源码将在晚上上传到 github 一.准备阶段 需要准备事项: 1.一个能在公网上访问的项目: 见:[  Java微信公众平台开发_01_本地服务器映射外网  ] 2.一个微信公众平台账号: 去注册: ...

  7. jQuery源码的一个坑

    纯吐槽 大半夜也真是够了,想学着jQ造个小轮子巩固下js,结果一开始就卡住了. 虽然之前也看过源码,但是主要是研究方法实现什么的,对于框架主函数和入口结构不怎么熟悉,于是想着一步一步调试看看. $(' ...

  8. C语言程序内存布局

    C语言程序内存布局 如有转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/44457453 作者:super_bert@csdn 一 ...

  9. sql脚本

    Windows下执行命令 \. d:\book.sql 这里使用了case when 这个小技巧来实现批量更新.//一个字段 UPDATE categories      SET display_or ...

  10. Log4j – Configuring Log4j 2 - Log4j 2的配置

    Configuration Inserting log requests into the application code requires a fair amount of planning an ...