KotlinJs — простой HTTP GET без функциональности динамического типа

#http-get #kotlin-js

#http-get #kotlin-js

Вопрос:

Я совершенно новичок в 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:

Я нашел способ не использовать dynamic с обратными вызовами, как в classic .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() amp;amp; xmlHttp.status == 200.toShort()) {
            callback.invoke(xmlHttp.responseText)
        }
    }
    xmlHttp.send()
}
  

и чем просто вызвать его:

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

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

Комментарии:

1. Почему бы вам просто не использовать fetch api? вы можете определить его с помощью ключевого слова external

2. На самом деле это тоже хорошая идея, однако в то время я использовал этот язык в общей сложности несколько часов. Спасибо за предложение другого решения;)

3. конечно, если вам нужна помощь в определении fetch api, я могу записать это для вас