是否有 rx 运算符合并流,但一次合并一个流?

Is there an rx operator that merges streams, but one stream at a time?

我想将两个 observable 流合并为一个,就像您使用 .merge() 运算符一样。我不使用该运算符的原因是因为它同时运行 observables 。我需要一个合并两个流的运算符,但在开始第二个流之前完成第一个流,这样响应将类似于:"stream1Value1", "stream1Value2", "stream2Value1", "stream2Value2".

使用 .merge() 运算符,代码看起来是这样的:

Observable.merge(self.getParameter(id: id).asObservable(), self.getSecondaryParameter(id: id).asObservable()).asSingle()

但给我这样的输出: "stream1Value1", "stream2Value1", "stream1Value2", "stream2Value2".

我试过使用 Single.zip(),但这给了我两个 parameters 来使用($0 和 $1)。另外我不确定它是否在开始第二个之前完成了第一个...

在我的文章 Recipes for Combining Observables in RxSwift 中了解更多关于 RxSwift 中所有组合运算符的信息 Recipes for Combining Observables in RxSwift

您要找的接线员叫concat。有一个方法以及几个静态函数重载。

在库中的“Concat.swift”文件中查找各种版本的运算符及其文档。

顺便说一句,zip 运算符和 combineLatest 也同时启动两个 Observables。