链中“ take”运算符顺序的区别是什么

时间:2018-11-21 09:15:23

标签: 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有什么区别? 他们看起来一样。

1 个答案:

答案 0 :(得分:1)

如果上游(observable1 / observable2)发出 N 个项目,则.flatMap()运算符发出 M 个项目,其中 M (通常)可以更大,更小或等于 N

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