Я пытаюсь использовать экспериментальную функцию Canvas - offscreenCanvas.
index.html
<html>
<body>
<canvas id="myCanvas" width="400" height="400"></canvas>
</body>
<script>
const canvas = document.querySelector('#myCanvas');
const offscreenCanvas = canvas.transferControlToOffscreen();
const worker = new Worker('./worker.js');
worker.postMessage({offscreenCanvas}, [offscreenCanvas]);
</script>
</html>
worker.js
onmessage = e => {
const ctx = e.data.offscreenCanvas.getContext('2d');
ctx.fillRect(0 , 0, 100 , 100);
ctx.commit();
}
Здесь все работает нормально, я рисую простой прямоугольник на холсте.Теперь - как передать дополнительную информацию с помощью postMessage?Например - возможно ли отправить объект с прямоугольными координатами?
Как
const obj = {
x: 0,
y: 0,
}
Я пытался использовать переносимые объекты, создав новый Int8Array:
const bufferObj = new Int8Array([obj.x, obj.y]);
Toчестно говоря, я не знаю, как отправить его работнику и прочитать его с объекта события.Я думал о
worker.postMessage(offscreenCanvas, bufferObj, [offscreenCanvas, bufferObj]);
Но это выдает ошибку. Значение по индексу 1 не имеет переносимого типа.Есть идеи, как это решить?