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因为时间已到,所以并没有多使用时间,而是直接返回了结果

时长从低到高时:

 
posted @ 2025-08-02 14:59  刘宏缔的架构森林  阅读(8)  评论(0)    收藏  举报