Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用_config.worker=false调用worker中的Papa.parse调用postMessage_Javascript_Web Worker_Papaparse_Worker Loader - Fatal编程技术网

Javascript 使用_config.worker=false调用worker中的Papa.parse调用postMessage

Javascript 使用_config.worker=false调用worker中的Papa.parse调用postMessage,javascript,web-worker,papaparse,worker-loader,Javascript,Web Worker,Papaparse,Worker Loader,我正在我自己的工作程序中调用Papa.parse,并且在\u config.worker中设置为false。 当进程完成时,它调用postMessagestill,触发一条消息给我自己的工作人员。 不应该 还应检查config.worker是否设置为true,然后仅调用global.postMessage 我不想将结果发送到主线程,也不想知道如何实现它。他们会这样做 这意味着他们要检查是否没有文档属性,是否有postMessage属性,是否当前域是从blob:URI加载的 最好的解决方案可能是不

我正在我自己的工作程序中调用
Papa.parse
,并且在
\u config.worker
中设置为false。 当进程完成时,它调用
postMessage
still,触发一条消息给我自己的工作人员。 不应该

还应检查
config.worker
是否设置为
true
,然后仅调用
global.postMessage
我不想将结果发送到主线程,也不想知道如何实现它。

他们会这样做

这意味着他们要检查是否没有
文档
属性,是否有
postMessage
属性,是否当前域是从
blob:
URI加载的

最好的解决方案可能是不要从
blob:
URI加载脚本,而是使用专用的脚本文件

const worker = new Worker( '/a_real_file.js' );
这里是一个使用
data:
URI的演示,因为stacksnippet不允许存储文件,但不要自己使用
data:
URI,这只是为了演示协议的重要性:

const-worker\u-script=document.querySelector('[type=“worker-script”]').textContent;
const worker_url='data:text/javascript',+encodeURIComponent(worker_脚本);
const worker=新的worker(worker\u url);
worker.onmessage=({data})=>console.log(数据);
worker.onerror=console.error

进口文件('https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.1.0/papaparse.min.js' );
const csv=`col1、col2、col3
a、 1,z
b、 2,y
c、 3,x`;
parse(csv,{header:true});
postMessage('worker done');

谁在
webapck
中使用
工作加载程序
不要使用内联导入

this.worker=wait import(/*webpackChunkName:“MyWorker”*/'workers/MyWorker')


使用
import MyWorker from'worker loader/MyWorker.js'将其作为文件导入,不会导致问题。

有效。我没有选中
worker loader
inline将其作为blob导入。谢谢
var IS_WORKER = !global.document && !!global.postMessage,
    IS_PAPA_WORKER = IS_WORKER && /blob:/i.test((global.location || {}).protocol);
const worker = new Worker( '/a_real_file.js' );