[英]How to pass array of transferable objects i.e. buffer along with non transferable object i.e. json obj via web worker in JavaScript - postMessage()?
So, here is what I am trying to achieve:所以,这就是我想要实现的目标:
For example:例如:
const cornersArray = new Uint16Array(5000), // should go as Transferable object trailsArray = new Float32Array(7000); // should go as Transferable object const state = 1, // integer quality = 'High', // string isTracking = true; // boolean this.Worker.postMessage({ event: 'ShowTrails', data: { cornersArray: cornersArray, trailsArray: trailsArray, state: state, quality: quality, isTracking: isTracking } }, [cornersArray.buffer, trailsArray.buffer]);
So, onMessage() at main thread, this should call ShowTrails() and data should be passed as a parameter.因此,主线程的 onMessage() 应该调用 ShowTrails() 并且数据应该作为参数传递。 But this is throwing error that objects passed are not detachable, failing in postMessage().
但这是抛出错误,传递的对象不可分离,在 postMessage() 中失败。
I am very noob in this, first time using web workers, please help me how to make this happen.我对此很菜鸟,第一次使用 web 工人,请帮助我如何实现这一目标。 I must be doing something wrong here while passing data.
传递数据时我一定在这里做错了什么。
Thanks!谢谢!
You are not passing the transferrable buffer correctly.您没有正确传递可转移缓冲区。 Try this:
尝试这个:
this.Worker.postMessage({
event: 'ShowTrails',
data: {
cornersArray: cornersArray.buffer,
trailsArray: trailsArray.buffer,
state: state,
quality: quality,
isTracking: isTracking
}
}, [cornersArray.buffer, trailsArray.buffer]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.