Kotlin是否有可能在一段时间内在协同程序中调用函数async(),在时间完成后会返回默认结果?
我发现只能调用await,而无限等待结果.
async {
...
val result = computation.await()
...
}
Run Code Online (Sandbox Code Playgroud)
但是真实的生产情况比你需要返回默认结果或异常.什么是在Kotlin协同程序中做某事的正确方法?像这样的东西:
async {
...
val timeout = 100500
val result: SomeDeferredClass = computation.await(timeout)
if (result.isTimeout()) {
// get default value
} else {
// process result
}
...
}
Run Code Online (Sandbox Code Playgroud) 我只是对 spring webflux 5.0.0 和 Kotlin 进行了一些实验,我在从 application.yml 加载配置时遇到了问题
对于基础项目,我从这个示例开始spring-kotlin-functional
但是只有手动加载 bean 和路由,而没有从配置文件加载任何示例,或者示例如何以这种方式实现 @ConfigurationProperties 类的模拟。
我尝试在 beans 部分中获取环境:
data class DbConfig(
var url: String = "",
var user: String = "",
var password: String = ""
)
fun beans(): BeanDefinitionDsl = beans {
bean {
//try to load config from path=db to data class DbConfig
env.getProperty("db", DbConfig::class.java)
}
bean<DBConfiguration>()
//controllers
bean { StatsController(ref()) }
bean { UserController(ref()) }
//repository
bean { UserRepository(ref()) }
//services
bean { StatsService(ref()) }
//routes …
Run Code Online (Sandbox Code Playgroud) 例如,我们有这样的结构:
data class Item(
val city: String,
val name: String
)
val structure = mapOf("items" to listOf(
Item("NY", "Bill"),
Item("Test", "Test2"))
)
Run Code Online (Sandbox Code Playgroud)
我想在 Javascript 中获取这个对象:
var structure = {
"items": [
{
"city": "NY",
"name": "Bill"
},
{
"city": "Test",
"name": "Test2"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我们如何map
从 Kotlin 转换为dynamic
Javascript 中具有这种结构的类型?
我只找到这种明确的方式:
fun Map<String, Any>.toJs(): dynamic {
val result: dynamic = object {}
for ((key, value) in this) {
when (value) {
is String -> result[key] = value …
Run Code Online (Sandbox Code Playgroud)