Kt协程基础知识点

2020-05-17  本文已影响0人  _好好学习
  1. suspend函数只能在CoroutineScope(协程作用域)中,或者另外一个suspend函数中调用;
  2. runBlocking会启动一个协程并且阻塞当前线程(即使是在另一个线程执行协程)直到其中的代码都执行;
  3. launch表示启动一个新的协程并且不阻塞当前线程;
  4. launch、runBlocking都不是suspend函数,runblocking不会等待非suspend函数;
  5. runBlocking不会等待非suspend函数;
  6. launch函数是CoroutineScope的方法,也就是说如果调用launch必须要有CoroutineScope对象;
  7. launch会返回一个Job对象,Job的join()是suspend函数,它的作用是挂起当前协程直到完成;
  8. async和launch类似,都是创建一个新的协程,async可以立即启动也可以惰性启动;
  9. async会返回一个Deferred对象,Deferred的await()会阻塞当前线程,等待计算结果并返回;
  10. withContext没有默认的调度器,必须指定一个协程调度器,效果类似于async{}.await()
上一篇 下一篇

猜你喜欢

热点阅读