问题标签 [transferable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用来自 Web Worker 的可传输对象
我目前有这个代码来创建一个 Web Worker:
然后webwork.js
是 Web Worker 的代码:
现在我想ArrayBuffer
使用以下代码传输 128 兆字节:
现在我应该已经转移了变量r
,我如何从 Web Worker 本身访问它。我已经尝试过, event.r
just和其他方法,例如尝试为 的数组添加第二个函数参数,但没有任何效果。r
self.r
ArrayBuffers
如何从 Web Worker 访问传输的变量?
javascript - chrome.runtime 是否支持发布带有可传输对象的消息?
我正在学习可转移对象:http ://updates.html5rocks.com/2011/12/Transferable-Objects-Lightning-Fast
它们看起来非常棒,我想在我的扩展中使用它们来加速将数据从 iframe 内部传递到 iframe 外部。
我已经让这个示例代码工作了,但它使用了一个 Web Worker:
有没有人有任何关于支持的信息,或支持/crbug 使用以下端口的时间表:
我没有看到任何对它的支持或任何关于支持它的东西,但这似乎真的很奇怪!
javascript - 使用可转移对象调用 postMessage 时,MessageChannel port.postMessage 的数据为空?
我正在学习MessageChannel和transferable objects。
我的页面有一个跨域的 iframe。MessageChannel 周围的文档表明它完全支持跨域通信。
我在 iframe 内的跨域页面中有此代码:
在我的背景页面中,我有:
当我尝试 postMessage uInt8Array 缓冲区时——我在另一端没有收到任何数据:
但如果我尝试发送一些简单的东西,请说:
然后我看到:
使用可转移对象时——数据是否在其他地方表示?我似乎能够很好地传输端口,但我正在努力传输数据数组。但是,因为我的异常没有被抛出——看起来它被转移了......但它去哪儿了?
dart - Dart 语言:如何将 String 转换为 Transferable (ByteBuffer)
我将使用 window.postMessage("", "*", [transferableData]) 在两个浏览器窗口之间发送数据。但是,我没有找到任何关于如何将类型转换为 Transferables 的直接答案。
因此,为了让我开始学习这一点,很高兴知道如何将简单的字符串转换为可传输(ByteBuffer)并在另一端(获取带有数据的消息的一侧)读取它。这将帮助我解决我的问题并了解这个概念。
重要更新:
这个问题把我引到这里:Dart Language: printing reports
可转移对象尚未在 Dart VM ( http://dartbug.com/4149 ) 上实现。这意味着,如果您通过 Dartium (Dart VM) 运行应用程序,则另一个窗口将接收和处理 postMessage 的第一个参数,而不是 Transferable Object。然而,JavaScript 完成了这项工作:对象被传输,原始数组被清空。
javascript - Three.js:如何从 web-worker 加载动画 .json 模型?
前言
近两个星期以来,我一直在努力解决这个问题,并且离解决方案还差得远。我已经问了一些我认为会引导我走向正确方向的子问题:
其中,第二个仍然是相关的,但似乎没有人在咬人,尽管有赏金。所以我现在直接问完整的问题,我会尽量不做任何假设。(提示)解决方案将不胜感激。
问题
我在.json
文件中有几个大型动画 3D 模型,例如可能加载了THREE.JSONLoader
. 它们的格式有点像这样:
从主线程执行所有操作时,我已经能够使动画正常工作。但是加载和处理这些大文件会使 GUI 冻结很长时间。所以我需要将这一切委托给一个web-worker,然后在主线程中成功创建动画。
此外,我需要通过transferable objects将结果发送回主线程,以免克隆原始数据阻塞主线程。据我了解,WebGL 使用Float32Array
s,其缓冲区是可传输的对象。所以我确信这是可以做到的。
在我看来,所需的过程如下:
- (UI) ➝发送文件名➝ (工人)
- (worker) ➝下载➝进程➝发送缓冲区(包括morphTargets)➝ (UI)
- (UI) ➝ 在不复制任何缓冲区的情况下重建动画
这是2和3我遇到了麻烦。确切地说,需要在工作人员中创建哪些缓冲区,以及如何使它们在 UI 端表现得像正确的 ( Buffer
) ?Geometry
我试过的
我知道已经存在一个相关问题:
但这个问题似乎过时了。很可能我应该使用THREE.BufferGeometry
没有提到的 a (可能是因为它还不存在)。接受的答案有点令人费解,并且要求我仍然在主线程中做一些原始工作,例如下载模型并渲染它以生成缓冲区。
事实证明,BufferGeometry
还不支持动画。一个satori99最近提交了一个拉取请求以添加此支持。我一直在使用该代码,但到目前为止,还无法将其应用于我的情况。似乎支持仍然很不完整。
这是我最新的拙劣尝试:
java - 为什么我不能将缓冲图像转换为可传输对象以将其发送到剪贴板?
我正在尝试将 bufferedImage 保存到系统的剪贴板,基本上我的程序会截取一个区域并将其保存为 PNG,但现在我希望它也能够将该图像发送到剪贴板,
我试过了Toolkit.getDefaultToolkit().getSystemClipboard().setContents( (Transferable) myImage, null);
Eclipse 希望我将缓冲myImage
的图像转换为可传输的图像,但这是不允许的,而且我在 stackOverflow 上查看的代码与我的整个程序一样长,但我未能正确使用它,所以我不知道什么是可转让的,我怎么能从我的缓冲图像中制作一个,有人能解释一下吗?
javascript - JavaScript Float32Array 检查可转移对象是否已绝育
我在我的主线程和物理工作者之间使用可转移对象。Float32Array 来回传递,效果很好。如何检查 Float32Array 是否已绝育?
例如这是一个数组:
作为可转移对象发送
目前在我的代码中,我检查它是否像这样被绝育:
这是正确的方法还是有一些方法可以专门告诉数组是否已绝育?这是一个游戏,所以每一毫秒的增益都很重要。
javascript - postMessage webworker 内存泄漏
我正在使用网络工作者以 10 毫秒的间隔传递一些数据。在任务管理器中,我可以看到工作内存集增加,直到我不取消间隔。
这就是我正在做的事情:
发送:
我也尝试这样做,但没有成功:
有人知道为什么这可能会泄漏吗?我目前正在 Chrome 上尝试这个。
javascript - 通过引用以尽可能少的开销将提交的文件传递给 Web Worker
我将有一个网络工作者来解析巨大的文本文件(200000 行,虽然语法很简单)。我希望用户通过拖放或其他方式提交该文件,从而获得一个File
对象:
我听说过Transferable objects。有没有办法将文件传输到 Worker?以某种方式读取文件不会减慢 GUI 线程的速度?
java - 使用 dataflavor image/svg+xml 在 java 中创建 svg DataFlavor
所以我想创建一个DataFlavor,它包含一个字符串并使用java 具有mimetype image/svg+xml。我不太确定我是否了解 DataFlavor 和 mimetype 是如何连接的。我不太明白 Java 教程1。
我想要的是能够使用系统剪贴板将我作为 svg 对象生成的字符串移动到其他程序。
我现在使用的代码是:
但是,这不起作用,我java.io.IOException: image/svg+xml
在尝试创建它时得到:
有人知道吗?