如何向网络工作者发送号码?
如何在网络工作者中接收号码?
如果可能,如何在不使用json或javascript对象的情况下执行此操作,因为使用它将添加额外的代码行..
编辑:
不知道为什么我得到了许多downvote ...我解释了我尝试做什么..我尝试在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 :(得分:1)
这不起作用,因为parseInt
不会抛出错误,它会返回NaN
(非数字)。
您还有另一个错误:如果您希望两者都在两条消息之间保留,则需要在timer
之外声明duration
和onmessage
。
请注意,更改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;
}
};