从 WebAssembly 调用 XmlHttpRequest
Call XmlHttpRequest from WebAssembly
我试图了解从 WebAssembly 调用 XmlHttpRequest 的最佳和最有效的方法。
我发现 http://webassembly.org/getting-started/js-api/ 这似乎解释了如何在 JavaScript 和 WebAssembly 之间进行调用。
为了让它工作,在我看来我必须执行以下操作:
- 编写一个 JavaScript 函数,我将其导入到调用 XmlHttpRequest
的 WebAssembly 中
- 编写我从 WebAssembly 导出的 WebAssembly 函数,该函数 JavaScript 在 XmlHttpRequest 完成时调用。
如果我想要动态数量的并发 XmlHttpRequests 运行,我还需要导入函数提供一个处理程序,然后由 JavaScript 提供回导出函数。
我现在有几个问题:
- 上面的方法准确吗?
- 如何将 URI 从 WebAssembly 传输到 XmlHttpRequest?我是否必须导入或导出 WebAssembler.Memory 对象 to/from WebAssembly 并将 URI 放入其中?
- 如果对 2 的回答是肯定的,这个 WebAssembler.Memory 对象将像一个全局变量,但这可以工作,因为只有一个线程。正确吗?
- 与2类似,如何将XmlHttpRequest的结果传回WebAssembly?也在 imported/exported WebAssembler.Memory 对象中?
- 关于 4,我如何以最有效的方式将 XmlHttpRequest 的结果放入 WebAssembly - 例如尽可能少的副本?我是否需要将 XmlHttpRequest 的结果从 JavaScript 代码复制到 WebAssembler.Memory 对象中?再一次,这个 WebAssembler.Memory 对象是一个全局变量?我想我可以让调用表单 WebAssembly 到 JavaScript 传递一个索引来指示结果应该放在 WebAssember.Memory 中的什么位置?
- 是的,这是正确的。
- 您可以将 URI 作为字符串传输,如
中所述
- 当 WebAssembly 支持线程时,你会调用 JavaScript 并且可以堆分配字符串,传递它的指针+长度,并从该调用中删除 return。
- 是的,像字符串一样传回去。
- 目前你必须做一个副本,尽管社区小组正在讨论在未来允许更少副本的方法。最新此类讨论的注释 are available from the WebAssembly meetings repository.
我试图了解从 WebAssembly 调用 XmlHttpRequest 的最佳和最有效的方法。
我发现 http://webassembly.org/getting-started/js-api/ 这似乎解释了如何在 JavaScript 和 WebAssembly 之间进行调用。
为了让它工作,在我看来我必须执行以下操作:
- 编写一个 JavaScript 函数,我将其导入到调用 XmlHttpRequest 的 WebAssembly 中
- 编写我从 WebAssembly 导出的 WebAssembly 函数,该函数 JavaScript 在 XmlHttpRequest 完成时调用。
如果我想要动态数量的并发 XmlHttpRequests 运行,我还需要导入函数提供一个处理程序,然后由 JavaScript 提供回导出函数。
我现在有几个问题:
- 上面的方法准确吗?
- 如何将 URI 从 WebAssembly 传输到 XmlHttpRequest?我是否必须导入或导出 WebAssembler.Memory 对象 to/from WebAssembly 并将 URI 放入其中?
- 如果对 2 的回答是肯定的,这个 WebAssembler.Memory 对象将像一个全局变量,但这可以工作,因为只有一个线程。正确吗?
- 与2类似,如何将XmlHttpRequest的结果传回WebAssembly?也在 imported/exported WebAssembler.Memory 对象中?
- 关于 4,我如何以最有效的方式将 XmlHttpRequest 的结果放入 WebAssembly - 例如尽可能少的副本?我是否需要将 XmlHttpRequest 的结果从 JavaScript 代码复制到 WebAssembler.Memory 对象中?再一次,这个 WebAssembler.Memory 对象是一个全局变量?我想我可以让调用表单 WebAssembly 到 JavaScript 传递一个索引来指示结果应该放在 WebAssember.Memory 中的什么位置?
- 是的,这是正确的。
- 您可以将 URI 作为字符串传输,如
- 当 WebAssembly 支持线程时,你会调用 JavaScript 并且可以堆分配字符串,传递它的指针+长度,并从该调用中删除 return。
- 是的,像字符串一样传回去。
- 目前你必须做一个副本,尽管社区小组正在讨论在未来允许更少副本的方法。最新此类讨论的注释 are available from the WebAssembly meetings repository.