轉自:http://www.aygfsteel.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
15
var?_int?=?window.setInterval;
16
window.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
26
function?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
36
function??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
50
var?speed?=?1111;
51
var?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>

?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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59
