HTML5 Web Worker发送和;收到号码

时间:2014-10-31 13:40:07

标签: javascript html5 web-worker

  1. 如何向网络工作者发送号码?

  2. 如何在网络工作者中接收号码?

  3. 如果可能,如何在不使用json或javascript对象的情况下执行此操作,因为使用它将添加额外的代码行..

    编辑:

    不知道为什么我得到了许多downvote ...我解释了我尝试做什么..

    我尝试在webworker中创建计时器

    • 如果我将字符串“start”发送给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;
        }
    
    
    }
    

1 个答案:

答案 0 :(得分:1)

这不起作用,因为parseInt不会抛出错误,它会返回NaN(非数字)。

您还有另一个错误:如果您希望两者都在两条消息之间保留,则需要在timer之外声明durationonmessage

请注意,更改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;
    }
};