将 Dispatcher.Main 与 delay() 一起使用是个好主意吗?

Art*_*r A 0 android kotlin kotlin-coroutines

fetchData()suspendCoroutine函数,所以它是在其他线程上实现的。

viewModelScope绑定到Dispatchers.Main:这应该仅用于与 UI 交互和执行快速工作。

所以我应该delay()Dispatcher.Main或者我应该搬出去了吗?

fun loadData() {
    viewModelScope.launch {
      delay(START_DELAY)
      when (val result = fetchData()) {
        is Response.Success<IData> -> {}
        is Response.Failure -> {}
      }
    }
  }


fun fetchData(){
    return suspendCoroutine { cont ->}
}
Run Code Online (Sandbox Code Playgroud)

Jem*_*rov 5

答案是它可以停留,delay不会伤害主线程,不会阻塞它。Main Dispatcher 中的这个协程将被挂起,而 Main 中的其他协程将继续运行。