我在將 Javascript 異步函式匯入我的 Kotlin 代碼時遇到問題。
這是一個示例 Javascript 函式:
export async function signUp(email, password){
console.log("Signing Up");
try {
const userCred = await createUserWithEmailAndPassword(auth, email, password);
console.log(userCred);
return userCred.user.accessToken
}
catch (e) {
console.log(e);
}
}
我將它匯入到我的 Kotlin 中:
@JsModule("@jlengrand/firebase-ports")
@JsNonModule
external object FirebasePorts{
suspend fun signUp(email: String, password: String) : String
}
使用該函式時,我希望從中得到一個字串:
var user : String? by mutableStateOf(null)
Button( attrs = {
onClick {
GlobalScope.launch {
user = FirebasePorts.signUp(email, password)
}
}
}) {
Text("Login!")
}
// printing the value
TextArea(value = user.toString())
然而,我得到的是一個承諾
我究竟做錯了什么?
謝謝!
uj5u.com熱心網友回復:
JS 中的異步函式當前未映射到 Kotlin 中的掛起函式。要讓異步函式在 Kotlin 中作業,您需要處理原生 Promise:
import kotlin.js.Promise
@JsModule("@jlengrand/firebase-ports")
@JsNonModule
external object FirebasePorts{
fun signUp(email: String, password: String) : Promise<String>
}
然后使用FirebasePorts.signUp(...).then { ... }
訪問該值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/453043.html
標籤:科特林 kotlin 协程 kotlin-js kotlin-js-互操作
下一篇:為什么修飾符大小沒有被覆寫?