从JavaScript终止WebAssembly

时间:2018-01-01 11:15:16

标签: javascript webassembly

是否可以终止运行的WebAssembly代码并清除JavaScript中的所有剩余资源?

一般情况是这样的。 JS初始化WASM模块并调用导出的函数。在稍后的时间点,WASM代码调用导入的函数config.xml将控制权转移回JS。 <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 执行一些操作,并根据结果决定是否保持WASM运行。

两种情况:

  • WASM应该继续运行。 f只是返回。
  • f决定终止WASM功能并可能清除任何与WASM相关的资源。它可以?怎么样?

如果能够更轻松地分析更具体的例子,请考虑f的工作原理。如果呼叫失败,则只返回指示失败。然而,如果它成功它就不会返回 - 一个广泛的过度简化就是说它终止了调用者并在它的位置开始一个新的(保持一些环境不变)。

1 个答案:

答案 0 :(得分:2)

可能终止调用者的唯一方法 - 无论调用者是Wasm还是JavaScript - 都是抛出异常。这使得呼叫者能够做出充分的反应。特别是,如果它需要进行清理,那么应该编写它以便捕获可能的异常,执行清理和重新抛出(或者,等效地,在可用时使用try-finally结构)。

Wasm目前不直接支持异常处理,但可以通过thunking到JavaScript来模拟。 Wasm的未来版本将提供适当的异常处理支持。