酒水不犯茶水
叶的离去,是风的追求还是树的不挽留?
BlogJava
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:325 文章:0 评论:612 引用:0
在javascript中用command模式模拟多线程 (ZT)
转自:
http://www.blogjava.net/emu/archive/2005/06/08/5775.html
1
<
html
><
head
><
title
>
emu -- 用command模式模拟多线程
</
title
></
head
><
body
>
2
<
SCRIPT
LANGUAGE
="JavaScript"
>
3
<!--
4
if
(Array.prototype.shift
==
null
)
5
Array.prototype.shift
=
function
()
{
6
var
rs
=
this
[
0
];
7
for
(
var
i
=
1
;i
<
this
.length;i
++
)
this
[i
-
1
]
=
this
[i]
8
this
.length
=
this
.length
-
1
9
return
rs;
10
}
11
if
(Array.prototype.push
==
null
)
12
Array.prototype.push
=
function
()
{
13
for
(
var
i
=
0
;i
<
arguments.length;i
++
)
this
[
this
.length]
=
arguments[i];
14
return
this
.length;
15
}
16
17
var
commandList
=
[];
18
var
nAction
=
0
;
//
控制每次运行多少个动作
19
var
functionConstructor
=
function
()
{}
.constructor;
20
function
executeCommands()
{
21
for
(
var
i
=
0
;i
<
nAction;i
++
)
22
if
(commandList.length
>
0
)
{
23
var
command
=
commandList.shift();
24
if
(command.constructor
==
functionConstructor)
25
if
(command.scheduleTime
==
null
||
new
Date()
-
command.scheduleTime
>
0
)
26
command();
27
else
28
commandList.push(command);
29
}
30
}
31
32
function
startNewTask()
{
33
var
resultTemp
=
document.getElementById(
"
sampleResult
"
).cloneNode(
true
);
34
with
(resultTemp)
{
35
id
=
""
;style.display
=
"
block
"
;style.color
=
(Math.floor(Math.random()
*
(
1
<<
23
)).toString(
16
)
+
"
00000
"
).substring(
0
,
6
);
36
}
37
document.body.insertBefore(resultTemp,document.body.lastChild);
38
commandList.push(
function
()
{simThread(resultTemp,
1
);}
);
39
nAction
++
;
40
}
41
42
function
simThread(temp,n)
{
43
if
(temp.stop) n
--
;
44
else
temp.innerHTML
=
temp.innerHTML
-
(
-
n);
45
if
(n
<
1000
)
46
commandList.push(
function
()
{simThread(temp,
++
n)}
);
47
else
{
48
var
command
=
function
()
{document.body.removeChild(temp);;nAction
--
;}
;
49
command.scheduleTime
=
new
Date()
-
(
-
2000
);
50
commandList.push(command);
51
}
52
}
53
54
window.onload
=
function
()
{setInterval(
"
executeCommands()
"
,
1
);}
55
//
-->
56
</
SCRIPT
>
57
<
button
onclick
="startNewTask()"
>
开始新线程
</
button
>
58
59
<
BR
><
BR
>
60
<
div
id
=sampleResult
onmouseover
="this.stop=true"
onmouseout
="this.stop=false"
style
="display:none;cursor:hand"
>
0
</
div
>
61
</
body
>
62
</
html
>
<SCRIPT LANGUAGE="JavaScript"> <!-- if (Array.prototype.shift==null) Array.prototype.shift = function (){ var rs = this[0]; for (var i=1;i<this.length;i++) this[i-1]=this[i] this.length=this.length-1 return rs; } if (Array.prototype.push==null) Array.prototype.push = function (){ for (var i=0;i<arguments.length;i++) this[this.length]=arguments[i]; return this.length; } var commandList = []; var nAction = 0; var functionConstructor = function(){}.constructor; function executeCommands(){ for (var i=0;i<nAction;i++) if (commandList.length>0){ var command = commandList.shift(); if (command.constructor == functionConstructor) if (command.scheduleTime == null || new Date()-command.scheduleTime>0) command(); else commandList.push(command); } } function startNewTask(){ var resultTemp = document.getElementById("sampleResult").cloneNode(true); with (resultTemp){ id="";style.display="block";style.color=(Math.floor(Math.random()* (1<<23)).toString(16)+"00000").substring(0,6); } document.body.insertBefore(resultTemp,document.body.lastChild); commandList.push(function(){simThread(resultTemp,1);}); nAction++; } function simThread(temp,n){ if (temp.stop) n--; else temp.innerHTML = temp.innerHTML - (-n); if (n<1000) commandList.push(function(){simThread(temp,++n)}); else{ var command = function(){document.body.removeChild(temp);;nAction--;}; command.scheduleTime = new Date()-(-2000); commandList.push(command); } } setInterval("executeCommands()",1); //--> </SCRIPT> <button onclick="startNewTask()">开始新线程</button> <BR><BR> <div id=sampleResult onmouseover="this.stop=true" onmouseout="this.stop=false" style="display:none;cursor:hand">0</div>
点击这里查看效果
发表于 2006-11-23 11:02
009
阅读(353)
评论(0)
编辑
收藏
所属分类:
网页编程
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
一段有趣的脚本
实例解析蠕虫病毒的原理(ZT)
JavaScript加密解密7种方法
Flash纯脚本生成饼图(ZT)
清空代码防止查看源代码(ZT)
VBS解决终端窗口中特殊快捷键问题
Technical explanation of The MySpace Worm
翻动100万级的数据(自定义的MSSQL分页查询过程)
Use CDO.Message (cdosys.dll) to send an SMTP Mail with importance (as a VBS Script)
破解所谓的“网页源代码加密”
<
2006年11月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
公告
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(113)
给我留言
查看公开留言
查看私人留言
随笔分类
2D & 3D(14)
(rss)
ajax(3)
(rss)
OTHERS(82)
(rss)
UNIX(27)
(rss)
兄弟(2)
(rss)
系统编程(85)
(rss)
经验技巧(51)
(rss)
网络资源(8)
(rss)
网页编程(20)
(rss)
黑客技术(88)
(rss)
随笔档案
2021年11月 (1)
2019年7月 (1)
2018年11月 (1)
2016年2月 (1)
2015年9月 (1)
2015年5月 (1)
2015年4月 (2)
2014年10月 (1)
2014年6月 (1)
2014年5月 (1)
2014年3月 (3)
2013年11月 (2)
2013年9月 (1)
2013年6月 (1)
2013年5月 (1)
2013年4月 (1)
2012年12月 (1)
2012年11月 (1)
2012年10月 (1)
2012年8月 (1)
2012年7月 (1)
2012年5月 (2)
2012年4月 (1)
2012年3月 (1)
2011年12月 (3)
2011年11月 (2)
2011年10月 (2)
2011年7月 (2)
2011年2月 (1)
2010年11月 (2)
2010年6月 (2)
2010年5月 (1)
2010年3月 (1)
2010年2月 (1)
2010年1月 (1)
2009年11月 (1)
2009年10月 (2)
2009年9月 (2)
2009年7月 (1)
2009年4月 (1)
2009年2月 (1)
2009年1月 (1)
2008年12月 (1)
2008年10月 (5)
2008年9月 (9)
2008年8月 (6)
2008年7月 (5)
2008年6月 (2)
2008年5月 (8)
2008年4月 (4)
2008年3月 (6)
2008年2月 (5)
2008年1月 (4)
2007年12月 (22)
2007年11月 (15)
2007年10月 (3)
2007年9月 (11)
2007年8月 (40)
2007年7月 (16)
2007年6月 (5)
2007年5月 (16)
2007年4月 (15)
2007年3月 (15)
2007年2月 (4)
2007年1月 (3)
2006年12月 (22)
2006年11月 (14)
文章分类
系统编程
(rss)
网络资源
(rss)
网页编程
(rss)
黑客技术
(rss)
相册
080512汶川大地震
20130405
mypic
taobao
ubuntu
W810C
手工
画画儿
草莓音乐节
Link
动力老男孩
(rss)
爱上DIY
搜索
最新评论
1. re: OsmocomBB项目
@zhou-xuelin
哇~~~多谢多谢!!!
--009
2. re: OsmocomBB项目
评论内容较长,点击标题查看
--zhou-xuelin
3. re: OsmocomBB项目
我的显示未发现libncurse 软件包是什么原因呢
--HYH
4. re: 楼上 恶邻 小孩 奔跑 咚咚咚
楼下一群跳广场舞的怎么办?还天天循环播放那几首低俗歌
--斗鱼
5. re: 小米手环分析[未登录]
没看到闹钟的内容,根据闹钟和震动提醒功能,可以做一些应用。
--kim
阅读排行榜
1. OsmocomBB项目(52019)
2. Unicode编码表/0000-0FFF(19443)
3. 打算做个HackRF(17241)
4. 水果机密码解码 "密码公式" 看了就知道怎么打暴机了(ZT)(16456)
5. Raspberry Pi 入手安装配置 (有图有真相)(14968)
评论排行榜
1. OsmocomBB项目(118)
2. 打算做个HackRF(18)
3. 无线键盘监听(更新 LCD 1602)(15)
4. Token Kidnapping Windows 2003 PoC exploit (Win2K3测试成功)(13)
5. 我是007加密后的软件密码破解(13)
2006 ©
009网站
版权没有,任意拷贝
如有意见和建议,请 E-mail 至
baicker@hotmail.com
建议使用
Firefox & 微软雅黑字体
进行浏览,最佳显示
1400*1050