kotlin: 有多个await()时使用的时长
一,代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
runBlocking {
suspend fun getResult1(): String {
delay(3000L) // 模拟耗时操作
return "Result1"
}
suspend fun getResult2(): String {
delay(2000L) // 模拟耗时操作
return "Result2"
}
suspend fun getResult3(): String {
delay(1000L) // 模拟耗时操作
return "Result3"
}
val results: List<String>
val time = measureTimeMillis {
println("begin async 1");
val result1 = async { getResult1() }
println("begin async 2");
val result2 = async { getResult2() }
println("begin async 3");
val result3 = async { getResult3() }
//await时长从低到高
/*
println("begin await 3");
val res3 = result3.await()
println("begin await 2");
val res2 = result2.await()
println("begin await 1");
val res1 = result1.await()
*/
//await时长从高到低
println("begin await 1");
val res1 = result1.await()
println("begin await 2");
val res2 = result2.await()
println("begin await 3");
val res3 = result3.await()
println("结束");
results = listOf(res1, res2, res3)
}
println("执行时间: $time")
println(results)
}
}
二,测试效果:
时长从高到低时:

可以看到虽然第一个await用时最长(3秒),
但第二、第三个await因为时间已到,所以并没有多使用时间,而是直接返回了结果
时长从低到高时:

浙公网安备 33010602011771号