HTML5 WebWorker 发送和接收号码

HTML5 WebWorker send & receive Number

本文关键字:号码 WebWorker HTML5      更新时间:2023-09-26
  1. 如何向网络工作者发送号码?

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

如果可能的话,如何在不使用json或javascript对象的情况下做到这一点,因为使用它会增加额外的代码行。

编辑:

哎呀,我得到了很多反对票,不知道为什么..我解释我试图做什么..

我尝试在网络工作者中创建计时器

  • 如果我将字符串"开始"发送到网络工作者,网络工作者将开始间隔(定时器(
  • 如果我向 Web 工作者发送一个号码,Webworker 将设置间隔

但我不知道如何发送号码,

我知道传递给 Webworker 的参数应该是一个字符串,我已经读过一些教程,

但我仍然不明白该怎么做,以便我的网络工作者可以识别一个数字。

因为我尝试解析Int((并且不起作用..

这是我的代码

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

螺纹.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;
    }

}

不起作用,因为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;
    }
};