JavaScript Float32Array检查可移植对象是否已被隔离

问题描述 投票:0回答:2

我正在主线程和物理工作者之间使用可转移对象。 Float32Array被来回传递,并且效果很好。如何检查Float32Array是否被绝育?

例如,这是一个数组:

this.transferableArray = new Float32Array();

发送为可转让对象

worker.postMessage(this.transferableArray, [this.transferableArray.buffer]);

当前,在我的代码中,我检查是否已将其绝育:

if (!transferableArray.length) {
    return false;
}

这是正确的方法吗,或者是否有某种方法专门告诉数组是否被绝育?这是一款游戏,因此每毫秒的增益都很重要。

javascript arrays web-worker transferable
2个回答
1
投票

在发送数组之后,它变得无用了,所以现在我只是在发送属性之后取消设置该属性。

worker.postMessage(this.transferableArray, [this.transferableArray.buffer]);
this.transferableArray = undefined;

现在,在任何时候都可以通过检查轻松地检查是否回来

if(!this.transferableArray) {
    return;
}

0
投票

在[99%的情况下,检查0 .byteLength应该足够。

如果确实需要处理剩余的1%,则可以尝试调用其slice()方法,如果ArrayBuffer被分离,则该方法将抛出。

slice()
© www.soinside.com 2019 - 2024. All rights reserved.