2014-10-31 66 views
-4
  1. 如何發送號碼給webworker?HTML5 WebWorker收發號碼

  2. 如何在webworker中接收號碼?

如果可能的話,如何做到這一點,而無需使用JSON或JavaScript對象,因爲使用它會添加額外的代碼行..

編輯:

EW我得到了很多downvote沒有知道爲什麼..我解釋一下我嘗試做..

我嘗試在webworker創建計時器

  • 如果我發送字符串「開始」到webworker,webworker將開始 間隔(定時器)
  • 如果我發送的數webworker,webworker將設置的 間隔

但我不持續時間「知道如何發送一個數字,

我知道傳給webworker應該是一個字符串參數,我已經看過幾個教程,

,但我還是不明白該怎麼做,所以我webworker可以識別號碼..

,因爲我嘗試parseInt函數(),而不是工作..

這裏是我的代碼

在HTML

window.onload = function(){ 

      var worker = new Worker("Thread.js"); 
      worker.postMessage("1500");  //set duration of interval 
      worker.postMessage("start"); //start the interval 


      worker.onmessage = function(e){ 
       document.body.innerHTML += '<p> worker receive: '+e.data+'</p>'; 
      } 

      worker.onerror = function(e){ 
       document.body.innderHTML += "<p> worker error"+e.data+"</p>"; 
      } 

    } 

Thread.js

onmessage = function(e){ 

    var msg = e.data ; 
    var timer; 
    var duration = 1000; //default duration 

    try{ 
     var number = parseInt(msg); 
     msg = number; 
    }catch(e){ 

    } 

    //start the interval 
    if(msg === "start"){ 
     timer = setInterval(function(){ 
      postMessage("lalala"); 
     }, duration); 
    } 

    else if(msg === "stop"){ 
     clearInterval(timer); 
    } 

    //set duration 
    else if(!isNaN(msg)){ 
     duration = msg; 
    } 


} 
+0

http://stackoverflow.com/questions/4019230/javascript-web-workers-how-do-i-pass-arguments – 2014-10-31 13:41:56

+1

的MDN有大約WebWorker API一個很好的教程:https://開頭開發商.mozilla.org/zh-CN/docs/Web/Guide/Performance/Using_web_workers – meskobalazs 2014-10-31 13:42:04

+0

您發佈的內容有何問題? – 2014-10-31 14:28:28

回答

1

這是行不通的,因爲parseInt不會拋出錯誤,它返回NaN(不是數字)。

您還有另一個錯誤:如果您希望在兩條消息之間持續存在,則需要在onmessage之外聲明timerduration

請注意,更改duration不會影響間隔,除非您重新啓動它。

var timer; 
var duration = 1000; 

onmessage = function(e) { 
    var msg = e.data ; 
    var number = parseInt(msg); 

    if(msg === "start") { 
     timer = setInterval(function() { 
      postMessage("lalala"); 
     }, duration); 
    } else if(msg === "stop") { 
     clearInterval(timer); 
    } else if(!isNaN(msg)) { 
     duration = number; 
    } 
}; 
+0

謝謝先生..原諒我的愚蠢..現在有道理 – user3578021 2014-10-31 16:32:03