永发信息网

关于JS Worker 对象的一点弱弱的问题

答案:2  悬赏:0  手机版
解决时间 2021-02-11 16:56
  • 提问者网友:人傍凄凉立暮秋
  • 2021-02-11 08:51
想问下, 可以 从worker对象向主线程发数据,不知道可不可以由主线程给worker发数据,来改变其相应的值呢?<br><br>代码如下,主线程接收WORKER发来的数字,点按钮可以停止或重新计数, 但是再点开始只能重新执行WORKER, 也就是重新计数了, 有没有办法可以保存上一次的数据,让计数从上次停止的地方再开始计数,我的想法能不能由主线程发送数据给WORKER,然后WORKER接收这个值以改变当前的状态 达到要求的效果?<br><br>但是找了半天没找到解法,求教了。<br><br>HTML:<br><!DOCTYPE html><br><html><br><head lang="en"><br>    <meta charset="UTF-8"><br>    <title></title><br>    <script src="index.js">&lt;&#47;script&gt;<br>    <script src="count.js">&lt;&#47;script&gt;<br></head><br><body><br>  <div id="numDiv">0</div><br>  <button id="start">Start</button><br>  <button id="stop">Stop</button><br><br></body><br></html><br><br>主线程:<br>var numDiv,worker;<br>window.onload = function () {<br>    numDiv = document.getElementById("numDiv");<br>    document.getElementById("start").onclick = startWorker;<br>    document.getElementById("stop").onclick = stopWorker;<br><br>}<br><br>function startWorker() {<br>    if (worker) {<br>       return;<br><br>    }<br><br>    worker = new Worker("count.js");<br>    worker.onmessage = function (e) {<br>        numDiv.innerHTML = e.data;<br>        }<br>}<br><br>function stopWorker(){<br>    if(worker){<br>        worker.postMessage(10000);<br>        worker.terminate();<br>        worker = null;<br>    }<br>    else{alert("it is already stopped man!")}<br>}<br><br>WORKER:<br><br>var countNum = 0;<br>function count(){<br>    onmessage = function (e) {<br>        countNum = e;<br><br>    }<br>    postMessage(countNum);<br>    countNum = countNum+100;<br>    setTimeout(count,100);<br><br>}<br><br>count();
最佳答案
  • 五星知识达人网友:天凉才是好个秋
  • 2021-02-11 09:09
可以的
var worker =new Worker("worker.js"); //创建一个Worker对象并向它传递将在新线程中执行的脚本的URL
 worker.postMessage("hello world");     //向worker发送数据
 worker.onmessage =function(evt){     //接收worker传过来的数据函数
   console.log(evt.data);              //输出worker发送来的数据
 }同样worker.js脚本中也可以通过postMessage向主线程发送消息,通过onmessage接收主线程发来的消息
全部回答
  • 1楼网友:猎心人
  • 2021-02-11 10:00
你好! 你概念上有问题 你必须先把PHP数组赋给一个js数组 如有疑问,请追问。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯