代码之家  ›  专栏  ›  技术社区  ›  user1772004

从WebAssembly调用XmlHttpRequest

  •  8
  • user1772004  · 技术社区  · 7 年前

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

    在我看来,为了使这项工作发挥作用,我必须做到以下几点:

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

    如果我想运行动态数量的并发XmlHttpRequests,我还需要导入的函数来提供一个处理程序,然后由JavaScript提供给导出的函数。

    我现在有几个问题:

    1. 上述内容准确吗?具体做法是什么?
    2. 如何将URI从WebAssembly传输到XmlHttpRequest?我必须导入或导出WebAssembler吗。内存对象到/来自WebAssembly,并将URI放在其中?
    3. 与2类似,如何将XmlHttpRequest的结果传输回WebAssembly?也在导入/导出的WebAssembler中。内存对象?
    4. 关于4,我如何以最有效的方式(例如,使用尽可能少的副本)将XmlHttpRequest的结果放入WebAssembly?我是否需要将XmlHttpRequest的结果复制到WebAssembler中。JavaScript代码中的内存对象?再一次,这个WebAssembler。内存对象是全局变量?我想我可以让从WebAssembly到JavaScript的调用传递一个索引,以指示WebAssember中的位置。记忆结果应该放在哪里?
    1 回复  |  直到 7 年前
        1
  •  3
  •   JF Bastien    7 年前
    1. 是的,这是正确的。
    2. 您可以将URI作为字符串传输,如中所述 this question about strings
    3. 当WebAssembly支持线程时,您可以调用JavaScript,只需堆分配字符串,传递其指针+长度,并在该调用返回时删除。
    4. 是的,像绳子一样把它传回来。
    5. are available from the WebAssembly meetings repository .