2020-04-21-在挂起函数中调用launch()函数

Kotlin提供一个suspend 关键字,使用它可以将任意函数声明成挂起函数,而挂起函数之间是可以相互调用的,如下所示:

suspend fun printDot() {

    println(".")

    delay(1000)        //是一个挂起函数,所以可以在printDot()函数中调用

}


但是,suspend()函数只能将一个函数声明成挂起函数,是无法给它提供协程作用域的。比如你现在尝试在printDot()函数中调用launch函数,一定是无法调用成功的,因为launch函数要求必须在协程作用域当中才能调用。

这个问题可以借助coroutinesScope函数来解决。coroutineScope函数也是一个挂起函数,因此可以在任何其他挂起函数中调用。它的特点是会继承外部的协程作用域并创建一个子作用域,借助这个特性,我们就可以给任意挂起函数提供协程作用域了。示例写法如下:

suspend fun printDot() = coroutineScope{

    launch {

        println(".")

        delay(1000)

        }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容