我问自己如何将Kotlin的协同程序与一些节点模块一起使用 . 我正在尝试在Kotlin中编写node.js服务器 .
继续使用JavaScripts着名的回调或Promises是很简单的,但看起来Kotlin回调将是更好的选择 . 但是对于node.js服务器,我需要使用MySQL或bcrypt库,只使用回调或Promise但不能使用协同程序,因为它不是分别用Kotlin编写的 .
Kotlin文档对我没有帮助,JetBrains说我只需要编写我的方法就像它同步工作并使用其他Kotlin函数就像它们同步运行一样,但用本机JavaScript编写的函数不知道像“suspend”这样的关键字或者我应该忽略这个事实?
一个例子是以下功能:
val bcrypt = require("bcrypt") // require by node.js
fun comparePass(hash: String, pass: String, callback: (Boolean) -> Unit) {
bcrypt.compare(pass, hash, { err: dynamic, res: dynamic ->
callback(err == null)
})
}
如何使用coroutines和这个库来编写这个函数?
1 回答
这是文档要求您编写的内容:
请注意,您自己的回调现在替换为
Continuation
,这是允许协程恢复的内部回调 . 另请注意,comparePass
函数的返回值现在只是Boolean
,您将其称为常规函数,不传递您自己的回调 .我不知道
dynamic
类型的语义,所以我不知道这是否有效 .