如何通过传递参数从Kotlin Native Wasm调用JavaScript(在浏览器中)?

时间:2019-06-17 08:02:56

标签: kotlin browser webassembly kotlin-js-interop

请原谅我不知道我应该在一篇文章中还是单独询问所有基本类型。

主要问题:

  1. 如何将Kotlin中的浮点数传递给JS?
  2. 其他“简单”类型呢?像浮子,绳子一样?
  3. setmap等其他类型甚至数据类呢?

我在Kotlin主文件的末尾有这个

@SymbolName("callback")
external fun cb(<......>)

如果cb()定义中的类型与我从main()传递的内容匹配,例如IntFloat,然后从浏览器访问cb(),将获得正确的值。

如果我使用Any,那么我得到的只是一个整数(我想应该是指向内存的指针)。

我尝试检查heap,但是对于如何检索通过Kotlin传递给cb()的int,float字符串毫无用处。

对于数组,我注意到jsinterop包中有JsArray,但是找不到如何使用它的良好参考。

我注意到的一件事是,我可以通过Arenas获得一个整数数组:

    val arena = allocateArena()
    pushIntToArena(arena, 1)
    pushIntToArena(arena, 12)

然后我将通过konan_dependencies.env.areans获取数组。

但是,如何获得浮点数数组?请告知。

P.S。我在konan中使用build.gradle插件来编译到Wasm32。通过向callback中的window.konan.libraries添加函数,将module.wasm.js传递给Wasm:

    var konan = {
      libraries: [
        { "callback": function(msg) { console.trace(msg); } }
      ],
    }

0 个答案:

没有答案