http-get - 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 的类型检查器。
- 有没有办法只使用 KotlinJs(没有动态)?
- 如果不可能,至少有人可以解释为什么吗?
解决方案
我找到了一种不使用动态回调的方法,就像在经典 .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)
}
希望它会在未来对某人有所帮助。
推荐阅读
- html - 缩小图像以适应弹性列
- python - 从脚本读取外部变量到python中的函数
- java - 如何在 WebView 中从 android 应用程序包 (.aab) 加载 html 文件
- python - Pygame,碰撞问题
- android - 如何初始化一个对象并从不同的方法访问它的值 - Kotlin
- database - Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: 0 // 在尝试登录时颤动
- javascript - 烧瓶将文件上传到烧瓶而没有表单
- python - ModuleNotFoundError:Jupyter Notebooks 中没有名为“pandas”的模块
- opengl - 如何在OpenGL中的按键上缓慢改变对象的颜色
- python - 如何在 Python Pandas DataFrame 表中加粗特定行