javascript - 通过 postMessage 传递 ImageData 在 chrome 上不起作用
问题描述
编辑:
它最终成为非常相关的信息,这只发生在 ImageDate 来自 WASM 时,我不知道为什么这很重要。如果有人对这种行为有所了解并且可以解释为什么这种情况发生在源自 WASM 的 ImageDatas 上,那么只有一个答案将受到高度赞赏。
我一直在开发一个没有奇怪的 JS 恶作剧、没有奇怪的库等的网站。但是当尝试使用 chrome 中的 postMessage 将 ImgData 对象从 webworker 传递到主线程时,我在另一端得到 null 。
ImageData 应该由postMessage 使用的结构化克隆算法支持( postmessage docs)。这适用于 Firefox,并且不会在 chrome 中给出任何崩溃/抛出/警告,它只是不传递数据。
console.log(ret); // properly displays the ImageData with data, width and height.
postMessage(ret); // no throw or anything
myWorker.onmessage = function(e) {
console.log(e); // e.data==null
// use e.Data as ImageData, which crashes.
}
如果我只传入一个随机字符串进行测试,它确实可以正常工作。有谁知道这里可能出了什么问题?
我已经为网络工作者尝试了所有错误事件,但没有一个被调用,所以没有
解决方案
我不知道为什么 Chrome 不起作用,但我建议您尝试分别发送底层imageData.data
数组和width
and height
。
const {data, width, height} = imageData;
postMessage({data, width, height})
然后,您可以在接收端重新构建它。
推荐阅读
- python - 谁能解释这是如何工作的 [1,2][bool("")]?
- python - 为什么我的海龟程序没有正确关闭?
- java - @Synchronized 方法中的 Kotlin IllegalMonitorStateException
- c# - 使用 ASP.NET Core 中间件拦截 API 响应(错误代码:403)
- asp.net-mvc - 将项目部署到在线 Web 服务器时出现错误 500
- c# - C# 以管理员身份运行命令提示符
- clojurescript - 将试剂版本从 0.6.0 更新到 0.8.1 时无法读取未定义的属性“调用”
- ios - 更改禁用按钮的色调颜色不起作用
- ios - Xcode/Swift:显示我添加到 CocoaPod 的“打印”
- arrays - 三维数组中每 12 步的平均值