我该怎么做才能执行多个单打,但只有在上一个完成后才移动到下一个?

What can I do to execute multiple Singles but only moving to the next when the previous is completed?

我有下一个场景。

单身名单:A、B、C。每一个都是一个服务器请求,名单大小不固定,可以是任意大小.

我的问题:我需要调用 A,当我有响应时,然后执行 B,当我有响应时,然后执行 C...直到完成所有来电。

我需要这样的东西:A 调用 -> A 响应 -> B 调用 -> B 响应 -> C 调用 -> C 响应...

但是使用 concat 我有这个:A 调用 -> B 调用 -> C 调用 -> A 响应 -> B 响应 -> C 响应...

所以它不起作用,因为 B 调用在我获得 A 响应之前被执行。

我不知道要使用什么运算符来完成此操作。我正在使用 Java,但这更像是一个 Rx logic/knowledge 问题,因此任何其他语言的回复也很有用。

请提供一些您正在尝试的代码,但 concatMap 完全符合您的要求 - 等待前一个 Observable 完成,然后再订阅下一个(并按顺序执行):

of('A', 'B').pipe(
  concatMap(val => Promise.resolve(`${val} Http call`)),
  tap(console.log)
).subscribe(() => console.log('done'))

日志;

A Http call
done
B Http call
done