gpt4 book ai didi

ios - RxSwift 中 Disposables.create() 的目的

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:47 25 4
gpt4 key购买 nike

我正在学习 RxSwift,在创建 Observables 时遇到了以下模式:

return Observable.create { observer in

let disposable = Disposables.create()

// Do some stuff with observer here

return disposable
}

据我所知,返回的 Disposable 实际上没有做任何事情,除了满足 API 返回 Disposable 的要求之外,它是否还有其他用途?

在任何情况下您可能需要返回已配置的 Disposable?

我想最让我困惑的是返回的 Disposable 似乎与正在创建的 Observable 的实现是分开的,即它没有分配给任何属性,也没有传递到它刚刚创建和返回的任何地方。

最佳答案

Disposables 相关的 create 方法有两种变体。

第一个,正如 Daniel 提到的,在你创建一个新的 Observable 时使用;基本上,您将使用 Disposables.create { ... } 闭包来“进行清理”。

这在使用 flatMapLatest 时非常有用,因为您之前的请求将在新请求进入时被处理掉。无论何时处理,都会调用“清理” block 。

Observable<Int>.create { observer in
let someRequest = doSomeLongRunningThing { result in
observer.onNext(result)
observer.onCompleted()
}

return Disposables.create {
// How can I "cleanup" the process?
// Cancel the request, for example.
someRequest.cancel()
}
}

Disposables.create 的第二个变体用于完全不同的目的 - 将多个 Disposable 对象分组为一个单个 一次性对象(a CompositeDisposable)。

例如:

let disposable1 = someAction()
let disposable2 = someOtherAction()

let compositeDisposable = Disposables.create(disposable1, disposable2)

关于ios - RxSwift 中 Disposables.create() 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52116884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com