ios - 链中 "take"运算符序列有什么区别

标签 ios rx-swift reactivex

例如,

let observable1 = Observable<Void>.of([1, 2, 3, 4, 5, 6, 7])
.take(1)
.flatMap{_ in 
 doSomething()
}

let observable2 = Observable<Void>.of([1, 2, 3, 4, 5, 6, 7])
.flatMap{_ in 
 doSomething()
}
.take(1)

我的问题是,这两个 Observable 有什么区别? 它们看起来一样。

最佳答案

如果 upstream (observable1/observable2) 发出 N 项,.flatMap() 运算符发出 M 项,其中 M 可以大于(通常)、小于或等于 N

在您的第一个示例中,您从上游N 项中取出1 项。在第二个示例中,您从 .flatMap() 运算符发出的 M 个项目中取出 1 个项目。

关于ios - 链中 "take"运算符序列有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53408664/

相关文章:

ios - 使用 Xcode Beta 6 的 MPMoviePlayerPlaybackDidFinishNotification 架构 arm64 的 undefined symbol

ios - 如何在iOS中以进度方式在后台下载多个mp4文件?

ios - 使用 MKLocalSearchRequest

java - RxJava2 : Emit error only when all observables emitted error

java - 由 Observable.defer() 创建的 Observable 上的 retry() 会触发一个新的 Observable 吗?

ios - CGlayer 的内存问题

ios - 从 Moya Response 获得回应

merge - RxSwift 中的合并和平面图运算符有什么区别

ios - swift - PerformSegue 无法在 RxSwift Observable 订阅中工作

javascript - 我可以从链式 AJAX 调用生成一系列 Rx Observables 吗?