1

是否可以取消 (Arrow-Kt) IO

RxJava每当我这样做时,我都会observable.subscribe({ // handle success },{ // some errohandling })得到一个Disposable我可以召唤Disposable.dispose()的东西。

与协程类似,doingcoroutineScope.launch { // Some suspending function }返回一个Job我可以调用的,Job.cancel()甚至调用coroutineScope.cancel()取消范围内的所有协程。

我正在寻找与 IO 相同的东西。我怎么能做到同样的事情IO呢?我只是打电话IO.unsafeRunAsyncCancellable { // Some Operations },但如果必须的话,我似乎找不到取消它的方法。虽然它返回 a Disposable,但我不完全知道如何处理它,因为它只是() -> Unit.

有人可以在这里指导我吗?

4

1 回答 1

4

正如你提到自己的unsafeRunAsyncCancellable回报Disposable。它确实是 的类型别名,与来自 RxJava() -> Unit的相同Disposable#dispose。这是一个不带参数并返回的函数Unit。调用时它会取消IO. 由于它只是一个类似于CompositeDisposableRxJava 的函数,因此变得简单的函数组合。

此外,如果您想与该库进行交互,我们还集成了 KotlinX Coroutines 结构化并发。在这种情况下,您可以使用目前在 SNAPSHOT 中但预计将于本月发布的KotlinX 集成模块。

我希望能回答你的问题:)

于 2020-03-20T09:29:40.470 回答