303 字
2 分钟
启动协程的launch() 和 async() 有什么区别?在某些情况下应该使用哪个?

启动协程的launch() 和 async() 有什么区别?在某些情况下应该使用哪个?#

launch()async() 之间的主要区别在于 :

  • launch() 将创建一个新的协程并立即启动它
  • async() 将创建一个新的协程但不会启动它直到某些东西在结果_Deferred_ 上调用 await()

一般来说,当我们想让协程在后台运行而不阻塞主线程时,应该使用_launch()_ ,而当我们需要等待协程的结果再继续时,应该使用 async()

不够具体?launch 更多是用来发起一个无需结果的耗时任务(如批量文件删除、创建),这个工作不需要返回结果。async 函数则是更进一步,用于异步执行耗时任务,并且需要返回值(如网络请求、数据库读写、文件读写),在执行完毕通过_await()_ 函数获取返回值。

如何选择这两个函数就看我们自己业务的需求啦,比如只是需要切换协程执行耗时任务,就用_launch_函数。如果想把原来的回调式的异步任务用协程的方式实现,就用_async_函数。

启动协程的launch() 和 async() 有什么区别?在某些情况下应该使用哪个?
作者
强人自传
发布于
2020-05-30
许可协议
CC BY-NC-SA 4.0