通过 web worker 创建函数 运行
Make a function run via web workers
所以我想知道是否有任何巧妙的 hack 可以使用 web workers 创建一个函数 运行 而不是将其提供给一个单独的文件。也许是这样的:
let cpuIntensiveTask = ()=>{
//function body
}
runWithWorker(cpuIntensiveTask);
而不是这个
let worker = new Worker("file.js");
您可以将网络工作者作为 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>
请注意,使用此方法的浏览器支持可能不那么可靠。
查看此处了解更多详细信息:
所以我想知道是否有任何巧妙的 hack 可以使用 web workers 创建一个函数 运行 而不是将其提供给一个单独的文件。也许是这样的:
let cpuIntensiveTask = ()=>{
//function body
}
runWithWorker(cpuIntensiveTask);
而不是这个
let worker = new Worker("file.js");
您可以将网络工作者作为 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>
请注意,使用此方法的浏览器支持可能不那么可靠。
查看此处了解更多详细信息: