首页 > 解决方案 > KotlinJs - 没有动态类型功能的简单 HTTP GET

问题描述

我是 KotlinJs 的新手,我想看看它在无服务器服务开发中的潜力。

我决定从使用KotlinJs文档中建议的HTTP GET方法调用外部 API开始。但是,如果没有机制,我无法想出任何使用它的方法。XMLHttpRequest()dynamic

fun main(args: Array<String>) {

    val url = "https://jsonplaceholder.typicode.com/todos/1"

    var xhttp: dynamic = XMLHttpRequest()
    xhttp.open("GET", url, true)
    xhttp.onreadystatechange = fun() {
        if (xhttp.readyState == 4) {
            println(xhttp.responseJson)
        }
    }
    xhttp.send()
}

当然这个例子工作得很好,但我觉得它必须是更好的方法而不禁用 Kotlin 的类型检查器

标签: http-getkotlin-js

解决方案


我找到了一种不使用动态回调的方法,就像在经典 .js 中一样

private fun getData(input: String, callback: (String) -> Unit) {

    val url = "https://jsonplaceholder.typicode.com/todos/$input"
    val xmlHttp = XMLHttpRequest()
    xmlHttp.open("GET", url)
    xmlHttp.onload = {
        if (xmlHttp.readyState == 4.toShort() && xmlHttp.status == 200.toShort()) {
            callback.invoke(xmlHttp.responseText)
        }
    }
    xmlHttp.send()
}

而不仅仅是调用它:

getData("1") {
    response -> println(response)
}

希望它会在未来对某人有所帮助。


推荐阅读