2014-11-25 15 views
1

好了,所以我工作的一个代码,我开始5名工人,他们都睡了从0-10秒的随机时间,然后他们回到他们睡了多久了。当所有的工人都睡够了多个JavaScript工人

到目前为止,我已经做了我的5名工人,睡眠对于随机时间,但不知道如何处理给管理者多个响应管理器,然后输出到HTML。那得到一个随机数, worker.js方法休眠是randomnumber然后把它睡了多久 manager.js(下)

window.onload = function(){ 
var w1= new Worker("worker.js"); 
var w2= new Worker("worker.js"); 
var w3= new Worker("worker.js"); 
var w4= new Worker("worker.js"); 
var w5= new Worker("worker.js"); 

var worker = [w1,w2, w3, w4, w5] 

for (i =0; i < worker.length; i++){ 

worker[i].postMessage("sleep"); 

    worker[i].onmessage = function(event) { 
     ndate = new Date(); 
     message = ndate + " Worker says " + event.data; 
     document.getElementById("output").innerHTML = message; 
     } 
} 


} 

该代码有5名工作人员,但该消息是从最后的消息工人。所以我的问题是我如何收集这5个消息在经理,等待所有5然后发送到HTML?

+0

你可以发布你的“worker.js”吗? – artm 2014-11-25 03:57:50

回答

0

也许工人们正在覆盖文本。尝试追加文:

document.getElementById("output").innerHTML += message; 
+0

确定我做到了,它看起来更像是我假设得到,但我想等他们都来“唤醒”,然后输出 – ManyMen50cent 2014-11-25 02:25:07

2

考虑到对方的回答你的反应,这应该工作。

window.onload = function(){ 

    var w1= new Worker("worker.js"); 
    var w2= new Worker("worker.js"); 
    var w3= new Worker("worker.js"); 
    var w4= new Worker("worker.js"); 
    var w5= new Worker("worker.js"); 

    var worker = [w1,w2, w3, w4, w5]; 

    var wokenUp = 0; 
    var allMessages = ""; 

    for (i =0; i < worker.length; i++){ 

     worker[i].onmessage = function(event) { 
      ndate = new Date(); 
      message = ndate + " Worker says " + event.data; 

      allMessages += message; 
      wokenUp++; 

      if (wokenUp == worker.length){ 
       document.getElementById("output").innerHTML = allMessages; 
      } 
     } 

     worker[i].postMessage("sleep"); 
    } 
}