JS实现模拟多线程,本文使用到js的闭包特性(3)
呵呵,知道这个方法后,就对原来的代码改写一遍。
代码如下:见index3.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 实例3 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Node(id,name,cn){
this.id = id;
this.name = name;
this.cn = cn;
}
var nodes = new Array();
nodes[0] = new Node(1,"node1","节点1");
nodes[1] = new Node(2,"node2","节点2");
var nodeConfig = {};
nodeConfig.ticks = 4 * 1000; //刷新频率
nodeConfig.msg = "运行中";
function showStatus(node){
alert(node.name + ":" + nodeConfig.msg);
}
function startup(){
var len = nodes.length;
for(var i = 0; i < len; i++){
var f = function(idx){
setInterval(function(){ showStatus(nodes[idx])},nodeConfig.ticks);
}
f(i);
}
}
startup();
//-->
</SCRIPT>
</BODY>
</HTML>
此次程序终于按最初的想法运行了。并且以后随着节点的增加,不会像代码2那样Copy一堆函数了,只需要在数组里面增加一个节点就可以。
为了更OO一点,又对程序重构了一番。
代码如下:见index4.html