通过Web worker运行一个函数

时间:2017-11-22 14:21:07

标签: javascript web-worker

所以我想知道是否有任何聪明的黑客能够让网络工作者运行一个函数而不是一个单独的文件。也许是这样的:

DataTable

而不是这个

let cpuIntensiveTask = ()=>{ //function body } runWithWorker(cpuIntensiveTask);

1 个答案:

答案 0 :(得分:0)

您可以将Web工作者内联为blob而不使用单独的文件:

<script id="worker1" type="javascript/worker">
  // This script won't be parsed by JS engines because its type is javascript/worker. 
  self.onmessage = function(e){
    self.postMessage('msg from worker');
  };
  // Rest of your worker code goes here.
</script>
<script>
  var blob = new Blob([ document.querySelector('#worker1').textContent ], { type: "text/javascript" });
  var worker = new Worker(window.URL.createObjectURL(blob));
  worker.onmessage = function(e) {
    console.log("Received: " + e.data);
  }
  worker.postMessage("hello");
  // Start the worker
</script>

请注意,此方法可能不支持浏览器支持。

有关其他详细信息,请参阅此处:https://stackoverflow.com/a/6454685/5535081