【发布时间】:2022-07-06 00:14:29
【问题描述】:
我目前正在尝试将 IPFS 与 Kotlin/JS 一起使用,尽管我的问题并不特定于此。
ipfs.cat() 和 ipfs.get() 函数返回 AsyncGenerator,我不确定如何使用 Kotlin 对其进行迭代(我什至不确定哪种类型最能代表 Kotlin 中的 AsyncIterable)
下面的代码是我正在尝试做的最小版本,尽管我没有测试下面的代码。 由于 for 循环根本上是错误的,因此它会因 ClassCastException 而失败,但我不知道应该用什么替换它。
文件1:
@file:JsModule("ipfs-core")
@file:JsNonModule
import kotlin.js.Promise
@JsName("create")
external fun create(config: Any = definedExternally): Promise<dynamic>
文件2:
create().then { ipfs: dynamic ->
ipfs.id().then { id: dynamic ->
myId = id.id as String
println(JSON.stringify(id))
}
val result: dynamic = ipfs.cat("bafkreihapp6racx2xf5gwnrgtsr56r37kazui3jvzzmot2nx2t6h6g2oom")
// result is an AsyncGenerator
// below fails with ClassCastException
for (element: dynamic in result){
println(element)
}
}
【问题讨论】:
-
您需要在 Kotlin 中定义所有外部类。因此,您将为要从特定 npm 模块使用的每种类型生成外部类。您是否尝试过使用
Dukat为特定的 npm 模块生成外部类?
标签: javascript kotlin kotlin-multiplatform kotlin-js async-iterator