如何在 Kotlin/JS 中导入和使用异步 JS 函数?

How do I import and use an async JS function in Kotlin/JS?

我在将 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())

然而,我得到的却是一个 Promise

我做错了什么?

谢谢!

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 { ... }访问值。