龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JS实现模拟多线程,本文使用到js的闭包特性

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
简单描述下项目需求:网络中有一台主机( 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>

精彩图集

赞助商链接