WebAssembly.instantiateStreaming需要一个可选参数



当我运行以下代码时,我得到一个Uncaught (in promise) TypeError: second argument must be an object错误:

async function loadWasm(url) {
const fetchPromise = fetch(url)
const { module, instance } = await WebAssembly.instantiateStreaming(fetchPromise)
// [...]
}
loadWasm('http://localhost:3000/path/to/file.wasm')

查看文档,它说WebAssembly.instantiateStreaming(importObject)的第二个参数是可选的,所以我不明白为什么浏览器使它成为强制性的,尽管如此?

我已经在Firefox 78.7.0esr(64位)和Chrome 88.0.4324.96(官方版本)(64位)中测试过了。如果这些代码很重要,可以在ruby on rails 6.1应用程序中使用webpack 5进行翻译。

更新:

我在mdn的github存储库上打开了一个问题,认为文档可能需要更新。到目前为止,似乎文档是好的,所以它可能是一个实现问题。

更新:

这既不是实现问题,也不是文档错误。我把我对这个问题的结论贴在下面的答案里。

https://github.com/WebAssembly/spec/issues/1284#issuecomment-772286062

只有当你实例化的模块实际导入了一些东西时才需要。

它在文档中被标记为可选是因为它并不总是需要的,而不是因为我们可以选择提供或不提供它。是wasm包决定了它是可选的还是必需的。

相关内容

  • 没有找到相关文章

最新更新