JS实现模拟多线程,本文使用到js的闭包特性
简单描述下项目需求:网络中有一台主机( Web 站点),需要对分布到各地的节点发送命令,检测命令执行结果,同时进行状态检测。由于各地节点是同构的,所以希望在进行命令执行
简单描述下项目需求:网络中有一台主机(Web站点),需要对分布到各地的节点发送命令,检测命令执行结果,同时进行状态检测。由于各地节点是同构的,所以希望在进行命令执行和状态检测时,能够起多个线程,每个线程对应一个节点,将结果即时反应到页面。
最开始的设想是这样的:把所有的节点放到数组,页面开始执行时遍历数组,将节点作为参数传递到实际中的函数,函数使用setInterval来启动,以此来模拟多线程。
代码如下:见index1.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 实例1 </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 start(){
var len = nodes.length;
for (var i =0; i < len ; i++){
setInterval(function(){showStatus(nodes[i])} ,nodeConfig.ticks);
}
}
start();
//-->
</SCRIPT>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> 实例1 </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 start(){
var len = nodes.length;
for (var i =0; i < len ; i++){
setInterval(function(){showStatus(nodes[i])} ,nodeConfig.ticks);
}
}
start();
//-->
</SCRIPT>
</BODY>
</HTML>
精彩图集
精彩文章