如何取消arrow-kt IO?

How to cancel arrow-kt IO?

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

RxJava 中,每当我执行 observable.subscribe({ // handle success },{ // some errohandling }) 时,我都会得到一个 Disposable,我可以调用 Disposable.dispose()

与协程类似,执行 coroutineScope.launch { // Some suspending function } returns 我可以调用的 JobJob.cancel() 甚至调用 coroutineScope.cancel() 取消所有协程范围。

我正在寻找与 IO 相同的东西。我怎样才能在 IO 中实现同样的目标?我只是打电话给 IO.unsafeRunAsyncCancellable { // Some Operations },但如果必须的话,我似乎找不到取消它的方法。尽管它 returns 是 Disposable,但我不知道如何处理它,因为它只是 () -> Unit.

的类型别名

有人可以指导我吗?

正如您自己提到的那样 unsafeRunAsyncCancellable returns Disposable。它确实是 () -> Unit 的类型别名,与 RxJava 的 Disposable#dispose 相同。这是一个不带参数的函数,returns Unit。 调用时它会取消 IO。因为它只是一个函数,所以 RxJava 中的 CompositeDisposable 变成了简单的函数组合。

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

希望能回答您的问题:)