0

我遇到了 RxSwift 调度程序的问题:

这两个代码有什么区别:

let results = query.flatMapLatest { query in
    return search(query)
}
.observeOn(MainScheduler.instance)

let results = query.flatMapLatest { query in
    return search(query)
        .observeOn(MainScheduler.instance)
}
4

1 回答 1

0

没有区别。你可以自己看看:

_ = Observable.just()
            .observeOn(ConcurrentDispatchQueueScheduler.init(qos: .userInitiated))
            .do(onNext: {
                print(Thread.current)
            })
            .flatMap{
                Observable.just()
            }
            .observeOn(MainScheduler.instance)
            .do(onNext: {
                print(Thread.current)
            })
            .subscribe()

相当于:

_ = Observable.just()
            .observeOn(ConcurrentDispatchQueueScheduler.init(qos: .userInitiated))
            .do(onNext: {
                print(Thread.current)
            })
            .flatMap{
                Observable.just().observeOn(MainScheduler.instance)
            }
            .do(onNext: {
                print(Thread.current)
            })
            .subscribe()

然而,subscribeOn可能是一个不同的故事,但这取决于您的 Observables 如何与调度一起工作。

于 2017-10-27T12:16:37.447 回答