是否可以取消(Arrow-Kt) IO?
在RxJava中,每当我做observable.subscribe({ // handle success },{ // some errohandling })时,都会给我一个Disposable,我可以在它上调用Disposable.dispose()。
与coroutines类似,执行coroutineScope.launch { // Some suspending function }会返回一个Job,我可以调用这个Job,Job.cancel()甚至调用coroutineScope.cancel()来取消范围内的所有协同。
我正在寻找与IO相同的东西。我如何在IO中实现同样的目标?我只打电话给IO.unsafeRunAsyncCancellable { // Some Operations },但如果必要的话,我似乎找不到取消它的办法。虽然它返回一个Disposable,但我不知道如何处理它,因为它只是() -> Unit的一个类型别名。
有人能指引我到这里来吗?
发布于 2020-03-20 09:29:40
正如您自己提到的,unsafeRunAsyncCancellable返回Disposable。它确实是() -> Unit的一个类型,它与Disposable#dispose froom RxJava相同。它是一个不带参数并返回Unit的函数。在调用时,它会取消IO。因为它只是一个函数,所以类似于CompositeDisposable的RxJava变成了简单的函数组合。
此外,在您想要与库交互的情况下,我们还为KotlinX协同服务结构化并发进行了集成。在这种情况下,您可以使用KotlinX集成模块,它目前处于快照状态,但预计将在本月发布。
我希望这回答你的问题:)
https://stackoverflow.com/questions/60771272
复制相似问题