使用IO时,在fx块中,我可以将continueOn
与dispatchers.io()
一起使用,但也可以使用Dispatchers.IO
或混合。有没有首选的方式?这两者有什么区别吗?
注意:我也在使用协同程序集成来运行IO
IO.fx {
effect { _viewState.postValue(ViewState.Loading) }.bind()
continueOn(dispatchers().io()) // dispatchers from Arrow
val repositoryDto: RepositoryDto = effect { service.getRepository() }.bind()
continueOn(Dispatchers.Default) // Dispatchers from Coroutines
ViewState.Content(repositoryDto)
}
没有首选方式,用户可以选择使用其中一种,也可以同时使用两者。
Arrow Fx的池提供了几个简单的Executor
池,类似于其他功能效果库。这些都是非常有效的功能方法。
另一方面,KotlinX的调度器目前提供了更多的功能,如EventLoop
,它通过ServiceLoader
加载Main
调度器,并提供测试支持。
我也在使用协同程序集成来运行IO
Arrow Fx的IO的KotlinX集成模块仅用于与结构化并发CoroutineScope
集成。