转自: http://www.blogjava.net/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>
|