KotlinJs - простой HTTP GET без функциональности Dynamic Type - PullRequest
0 голосов
/ 04 апреля 2019

Я полностью новичок в KotlinJs и хотел проверить его потенциал в разработке безсерверных услуг.

Я решил начать с вызова внешнего API с помощью метода HTTP GET с использованием XMLHttpRequest() предложено в KotlinJs документации.Тем не менее, я не могу придумать способ использовать его без механизма 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 .

  • Есть ли способ сделать это, используя только KotlinJs (без динамического)?
  • Еслиэто невозможно, может кто-нибудь хотя бы объяснить, почему?

1 Ответ

0 голосов
/ 04 апреля 2019

Я нашел способ не использовать динамический с обратными вызовами, как в классическом .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)
}

Надеюсь, это поможет кому-то в будущем.

...