轉自:http://www.tkk7.com/emu/archive/2005/06/20/6365.html

?1<html><head><title>emu?--?用fason的參數化定時器模擬多線程</title></head><body>
?2 <SCRIPT?LANGUAGE="JavaScript">
?3 <!--
?4
?5 var?_st?=?window.setTimeout;
?6 window.setTimeout?=?function(fRef,?mDelay)?{
?7 ????if(typeof?fRef?==?'function'){
?8 ????????var?argu?=?Array.prototype.slice.call(arguments,2);
?9 ????????var?f?=?(function(){?fRef.apply(null,?argu);?});
10????????return?_st(f,?mDelay);
11????}

12????return?_st(fRef,mDelay);
13}

14
15var?_int?=?window.setInterval;
16window.setInterval?=?function(fRef,?mDelay)?{
17????if(typeof?fRef?==?'function'){
18????????var?argu?=?Array.prototype.slice.call(arguments,2);
19????????var?f?=?(function(){?fRef.apply(null,?argu);?});
20????????return?_int(f,?mDelay);
21????}

22????return?_st(fRef,mDelay);
23}

24
25
26function?startNewTask(){
27????var?target?=?document.getElementById("sampleResult").cloneNode(true);
28????with?(target){
29????id="";style.display="block";style.color=(Math.floor(Math.random()*?(1<<23)).toString(16)+"00000").substring(0,6);
30????}

31????document.body.insertBefore(target,document.body.lastChild);
32????var?parameter?=?{target:target,n:0,result:0}
33????parameter.timer?=?setInterval(count,1,parameter);
34}

35
36function??count(parameter){
37????with?(parameter){
38????????if?(!target.stop){
39????????????for(var?i=0;i<speed;i++)
40????????????????if?(n<MAX)?result?+=?++n;
41????????????target.innerHTML?=?result;
42????????}

43????????if?(n>=MAX){
44????????????clearInterval(timer);
45????????????setTimeout(function(elm){document.body.removeChild(elm)},2000,target);
46????????}

47????}

48}

49
50var?speed?=?1111;
51var?MAX=100000;
52//-->
53
</SCRIPT>
54<button?onclick="startNewTask()">開始新線程</button>
55
56<BR><BR>
57<div?id=sampleResult?onmouseover="this.stop=true"?onmouseout="this.stop=false"?style="display:none;cursor:hand">0</div>
58</body>
59</html>