我正在尝试在Web Worker中的React应用上并行运行代码。但是我遇到了一个我不完全理解的错误。
worker.js
const workercode = () => {
self.onmessage = function (e) {
console.log('ONM');
if (e.data.evalInContext) {
console.log('TRYING');
const { $eval, context, moment } = e.data.evalInContext;
// const ret = (new Function(`with(this) { return ${$eval}}`)).call({ moment, ...context });
this.postMessage({
result: []
});
}
};
};
let code = workercode.toString();
code = code.substring(code.indexOf('{') + 1, code.lastIndexOf('}'));
const blob = new Blob([code], { type: 'application/javascript' });
const worker_script = URL.createObjectURL(blob);
module.exports = worker_script;
module.js
window.ws = worker_script;
const worker = new Worker(worker_script);
worker.onmessage = function (e) {
console.log('AN E HAPPENED ', e);
};
....later in a function
worker.postMessage(message);
^^^^^引发错误
获取
Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'Worker': function hooks () {
return hookCallback.apply(null, arguments);
} could not be cloned.
at eval