尽管它在index.d.ts
了描述,但它的用法在编译期间会产生错误“ ERROR TS2304: Cannot find name 'call_indirect'
”。 call_direct
。
似乎它们在这里被删除了 - https://github.com/AssemblyScript/assemblyscript/pull/974。 是否有/将有任何替代品? 在我的情况下,我需要将从 JS 端提供的回调与 wasm 类相关联。 我的计划是将一个表传递给 wasm 模块(使用--importTable
标志),然后使用类似call_indirect( this.callbackId )
东西调用它
经过一番考虑,我想出了两种可能的解决方案:
1)在JS中维护回调表(只是一个回调数组)并为wasm模块提供invokeCallback(callbackId: i32): void
方法。
2) 向编译器添加一个--tableBase
选项,这样用户就可以在表中专门为回调保留一些空间。 可能有效,但可能会使编译器方面的事情复杂化。
无论如何,请随时关闭此问题。 唯一的问题是call_indirect
和call_direct
应该从index.d.ts
删除,如果它们不会被添加回功能中
是的,由于闭包实现的预期问题,这些已被删除。 但是仍然可以这样做:
changetype<(a: i32, b: i32) => i32>(someTableIndex)(1, 2);
分别
var tableIndex = changetype<usize>(someFunction);
已修复 #1017
最有用的评论
是的,由于闭包实现的预期问题,这些已被删除。 但是仍然可以这样做:
分别