2014-11-25 8 views
1

좋아요, 그래서 저는 5 명의 직원을 시작하는 코드에서 작업하고 있습니다. 0 ~ 10 초 사이의 임의의 시간 동안 잠을 자면, 그들은 얼마나 오래 잤는지를 반환합니다. 관리자는 모든 작업자가 수면을 마쳤을 때 이것을 html로 출력합니다.여러 JavaScript 작업자

지금까지 5 명으로 구성된 임의의 시간 동안 잠을 자지 만 관리자에게 여러 응답을 처리하는 방법을 모릅니다. , 임의의 숫자를 얻을 수 worker.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; 
     } 
} 


} 

(아래) manager.js을자는 시간을 보내는이 코드 5 일 명 노동자가 있지만 메시지는 마지막의 메시지입니다 노동자. 그래서 내 질문은 관리자에서 5 개의 메시지를 수집하고 5를 모두 기다린 다음 html로 보냅니다.

+0

"worker.js"를 게시 할 수 있습니까? – artm

답변

0

아마도 근로자가 텍스트를 덮어 쓰고 있습니다. 텍스트를 추가 을 시도해보십시오

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

나는 그것을했다. 그리고 나는 그것이 도착하기 위해 생각하고있는 것처럼 더 많이 본다. 그러나 나는 그들 모두가 "일어 났"을 기다리고, 그 다음 출력하고 싶어한다 – ManyMen50cent

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"); 
    } 
}