【问题标题】:Web worker usage for checking prime in html5用于检查 html5 中素数的 Web Worker 用法
【发布时间】:2020-10-23 09:34:12
【问题描述】:

我是这个网络工作者概念的新手,用于问题描述

  • 从用户那里获取一个数字输入(小于 100)并将其保存到网络存储中。
  • 创建一个 web worker 来增加数字直到它变成素数。
  • 提供“开始”和“结束”两个按钮来启动或结束进程。
  • 按“结束”后,增量停止,或者数字变为素数 - 以先发生者为准。

但在下面的代码中,checkprime 功能不起作用,请协助。 我在下面用 HTML 编码:

<form>
  <input id="num" type="number" max="100" /></br><br/><br/>
  <center>
    <p> Result<output id="result"></output></p>
    <button onclick="CheckPrime()">Start</button>
    <button onclick="StopProcess()">Stop</button>
  </center>
</form>
var w;

function CheckPrime() {
  sessionStorage.inputNum = document.getElementById("num").value;

  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {

      w = new Worker("web.js");

    }
    w.onmessage = function(event) {
      document.getElementById("result").innerHTML = event.data;
    }
  } else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Workers...";
  }
}

function StopProcess() {
  alert("Process has been ended");
  w.terminate();
  w = undefined;
}

webworker.js

function p() {
  var i;
  n = sessionStorage.inputNum;
  for (i = 2; i <= n - 1; i++) {
    if (n % i == 0) {
      n++;
    }
  }
  postMessage("found prime" + n);

}
p();

【问题讨论】:

  • 如果不知道“不起作用”是什么意思,将很难为您提供帮助。你读过How do I ask a good question吗?
  • checkprime 函数没有在浏览器中显示任何文本,只有 stopprocess 函数显示消息“进程已结束”。

标签: javascript web-worker


【解决方案1】:

Web Worker 无法访问存储对象(SessionStorage 和 LocalStorage 都没有)。可用的最接近的东西是 IndexedDB,但在您的情况下,根本不推荐它。

而只是让您的工作人员等待来自主上下文的消息事件:

在主目录

  w = new Worker("web.js");
  w.postMessage(+document.getElementById("num").value);

在 worker.js 中

self.onmessage = function p( evt ) {
  var i;
  var n = evt.data;
  for (i = 2; i <= n - 1; i++) {
    if (n % i == 0) {
      n++;
    }
  }
  postMessage("found prime" + n);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 2017-04-17
    • 1970-01-01
    • 2014-05-24
    • 2012-12-25
    • 2014-06-24
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多