[英]Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': Value at index 0 does not have a transferable type
[英]Issues with web worker Implementation in Echartjs "Failed to execute 'postMessage' on 'Worker': Value at index 0 does not have a transferable type."
誰能幫我實現一個 web 工人?
主要代碼:
dataset = "dataset" + document.getElementById("dataset").value
const config = {
xAxis: {
type: 'category',
data: Object.keys(window[dataset])
},
yAxis: {
type: 'value'
},
series: [
{
data: Object.values(window[dataset]),
type: 'line'
}
]
};
const worker1 = new Worker('worker/echarts1.worker.js');
const canvasEl = document.getElementById("offscreenCanvas1");
console.log(canvasEl);
const offscreenCanvas = canvasEl.transferControlToOffscreen();
worker1.postMessage({ canvas: offscreenCanvas, config }, [offscreenCanvas]);
Web 工人(echarts1.worker.js)
importScripts('https://cdn.jsdelivr.net/npm/echarts@5.3.3/dist/echarts.js');
onmessage = function (event) {
console.log("Started Worker");
const { canvas, config } = event.data;
const chart = new echarts.init(canvas);
chart.setOption(config);
console.log("Finished Worker");
};
執行時,我在控制台中遇到以下錯誤。
您正在傳輸(可能的)HTMLCanvasElement ( <canvas>
),而不是 OffscreenCanvas。
要從 HTMLCanvasElement 中獲取 OffscreenCanvas,您需要調用其.transferControlToOffscreen()
方法:
const canvasEl = document.getElementById("chart-container1");
const offscreenCanvas = canvasEl.transferControlToOffscreen();
const worker1 = new Worker('echarts1.worker.js');
worker1.postMessage({ canvas: offscreenCanvas, config }, [offscreenCanvas]);
(如果 id 為""chart-container1"
的元素不是<canvas>
,那么您需要改為定位一個。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.