一个worker中创建另一个worker,总是显示后者未定义,怎么回事?
html文件
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="textcml; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
起始值:<input type="text" id="start" name="start"/><br>
结束值:<input type="text" id="end" name="end"/><br>
个数:<input type="text" id="count"/><br>
<input type="button" value="计算" onClick="cal()"/>
<table id="show" style="border:2px solid gray;background:#ccc"></table>
<script type="text/javascript">
var cal=function(){
var start=parseInt(document.getElementById('start').value);
var end=parseInt(document.getElementById('end').value);
if(start>=end){
return;
}
var cal=new Worker('js/worker2.js');//使用worker来启动多线程
var data={start:start,end:end,count:count};
cal.postMessage(JSON.stringify(data));
cal.onmessage=function(event){
var table=document.getElementById('show');
table.innerHTML='';
var result=event.data;
var nums=result.split(',');
var COLS_NUM=8;
for(var i=0;i<=(nums.length-1)/COLS_NUM;i++){
var row=table.insertRow(i);
for(var j=0;j<COLS_NUM&&j*COLS_NUM+j<nums.length-1;j++){
row.insertCel(j).innerHTML=nums[i*COLS_NUM+j];
}
}
}
};
</script>
</body>
<html>
js文件--worker2.js
onmessage=function(event){
var data=JSON.parse(event.data);//将数据提取出来
var start=data.start;
var end=data.end;
var count=data.count;
var result='';
search:
for(var n=start;n<=end;n++){
for(var i=2;i<=Math.sqrt(n);i++){
if(n%i==0)continue search;
}
result+=(n+',');//搜集质数
}
var sub=new Worker('subworker.js');//再次启动worker线程
var info={result:result,count:count};
sub.postMessage(info);//把要处理的数据传入启动线程中
sub.onmessage=function(event){
//发送消息,将会触发前台JavaScript脚本中worker对象的onmessage方法
postMessage(event.data);
}
}
js文件--subworker.js
onmessage=function(event){
var data=JSON.parse(event.data);//将数据提取出来
var start=data.start;
var end=data.end;
var count=data.count;
var result='';
search:
for(var n=start;n<=end;n++){
for(var i=2;i<=Math.sqrt(n);i++){
if(n%i==0)continue search;
}
result+=(n+',');//搜集质数
}
var sub=new Worker('subworker.js');//再次启动worker线程
var info={result:result,count:count};
sub.postMessage(info);//把要处理的数据传入启动线程中
sub.onmessage=function(event){
//发送消息,将会触发前台JavaScript脚本中worker对象的onmessage方法
postMessage(event.data);
}
}
===========================
请教一下,那里有错误,总是在subworker.js15中显示Worker is not defined?
ruibin
ruibin
相关分类