mak*_*aco 5 javascript firefox web-worker
我正在开发一个名为 Ozai 的帮助程序库,以使网络工作者更轻松,但在 Firefox 中遇到了问题。我从 URL Blob 创建了一个网络工作者并尝试将此有效负载发布到它:
msg = {
"id":"0fae0ff8-bfd1-49ea-8139-3d03fb9584e4",
"fn":"fn",
"args":[100,200]
}
Run Code Online (Sandbox Code Playgroud)
使用此代码:
worker.postMessage(msg)
Run Code Online (Sandbox Code Playgroud)
但它抛出一个DataCloneError异常。看起来 Firefox 的结构化克隆实现在一个非常简单的对象上失败了。代码在 Chrome 和 Safari 上运行没有问题,但在最新版本的 Firefox 中失败。我在这里错过了什么吗?我如何解决这个问题(最好不要对有效负载进行字符串化)?
这是一个小提琴: http : //jsfiddle.net/V8aCy/6/
还有一张 Firelord Ozai 的照片:

您正在尝试postMessage使用具有引用属性的对象进行调用arguments。这是行不通的,因为数据必须是 transferable,这意味着要么完全 JSON 可序列化,要么实现Transferable(例如 ArrayBuffer),这arguments不是。
使用Array.prototype.slice.call(arguments, 0)转换arguments到一个数组,可序列化(克隆),如果内容是确定。
| 归档时间: |
|
| 查看次数: |
3977 次 |
| 最近记录: |