从WebAssembly调用XmlHttpRequest

use*_*004 6 xmlhttprequest webassembly

我试着理解从WebAssembly调用XmlHttpRequest的最佳和最有效的方法是什么.

我找到了http://webassembly.org/getting-started/js-api/,它似乎解释了如何在JavaScript和WebAssembly之间进行调用.

为了让这个工作起来,我觉得我必须做到以下几点:

  • 编写一个JavaScript函数,我将其导入到调用XmlHttpRequest的WebAssembly中
  • 编写一个WebAssembly函数,我从WebAssembly导出,当XmlHttpRequest完成时,JavaScript调用该函数.

在情况下,我想有运行并发的XMLHttpRequest的动态数字,我还需要导入的功能来提供,然后返回提供由JavaScript的导出函数的处理程序.

我现在有很多问题:

  1. 上面的准确和方法是否准确?
  2. 如何将URI从WebAssembly传输到XmlHttpRequest?我是否必须将WebAsseratorr.Memory对象导入或导出到WebAssembly中并将URI放入其中?
  3. 如果2的答案是肯定的,那么这个WebAssembler.Memory对象就像一个全局变量,但这可以工作,因为只有一个线程.正确?
  4. 与2类似,如何将XmlHttpRequest的结果传回WebAssembly?还在导入/导出的WebAssembler.Memory对象中?
  5. 结合4,如何以最有效的方式将XmlHttpRequest的结果导入WebAssembly - 例如,尽可能少的副本?我是否需要从JavaScript代码中将XmlHttpRequest的结果复制到WebAssembler.Memory对象中?而且,这个WebAssembler.Memory对象是一个全局变量?我想我可以让调用表单WebAssembly传递一个索引来指示WebAssember.Memory中应该放置结果的位置?

JF *_*ien 3

  1. 是的,这是正确的。
  2. 您可以将 URI 作为字符串传输,如有关字符串的问题中所述
  3. 当 WebAssembly 支持线程时,您可以调用 JavaScript,并且可以仅堆分配字符串,传递其指针+长度,并在从该调用返回时删除。
  4. 是的,像绳子一样传回来。
  5. 目前您必须进行复制,尽管社区组正在讨论允许将来减少复制次数的方法。最新此类讨论的注释可从 WebAssembly 会议存储库中获取