Как отменить стрелку-кт IO? - PullRequest
1 голос
/ 20 марта 2020

Можно ли отменить (Arrow-Kt) IO?

В RxJava всякий раз, когда я делаю observable.subscribe({ // handle success },{ // some errohandling }), мне дают Disposable, который я могу назвать Disposable.dispose().

Подобно сопрограммам, выполнение coroutineScope.launch { // Some suspending function } возвращает Job, на который я мог бы позвонить, Job.cancel() и даже вызов coroutineScope.cancel(), чтобы отменить все сопрограммы в области.

Я ищу то же самое с IO. Как я могу добиться того же в IO? Я только звоню IO.unsafeRunAsyncCancellable { // Some Operations }, но я не могу найти способ отменить его, если придется. Хотя он возвращает Disposable, я точно не знаю, что с ним делать, поскольку это просто псевдоним типа для () -> Unit.

Может ли кто-нибудь направить меня сюда?

1 Ответ

4 голосов
/ 20 марта 2020

Как вы уже упоминали, unsafeRunAsyncCancellable возвращает Disposable. Это действительно typealias для () -> Unit, что совпадает с Disposable#dispose froom Rx Java. Это функция, которая не принимает аргументов и возвращает Unit. При вызове отменяет IO. Поскольку это просто функция, что-то вроде CompositeDisposable из Rx Java становится простой композицией функций.

Более того, у нас также есть интеграции для структурированного параллелизма KotlinX Coroutines в случае, если вы хотите взаимодействовать с этой библиотекой , В этом случае вы можете использовать модуль интеграции KotlinX , который в настоящее время находится в SNAPSHOT, но ожидается, что он выйдет в этом месяце.

Я надеюсь, что он ответит на ваши вопросы:)

...