如何执行多次单打,但仅在前一个完成时才移动到下一个?

时间:2019-05-09 11:27:00

标签: rxjs rx-java2 system.reactive

我有下一个场景。

单打列表:A,B,C。每个请求都是服务器请求,列表大小不是固定的,可以是任意大小

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

>

我需要这样的内容: A通话-> A响应-> B通话-> B响应-> C通话-> C响应...

但是使用concat我有: A呼叫-> B呼叫-> C呼叫-> A响应-> B响应-> C响应...

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

我不知道该使用什么运算符来完成此操作。我正在使用Java,但这更多是一个Rx逻辑/知识问题,因此使用其他语言进行的任何响应也可能很有用。

1 个答案:

答案 0 :(得分:1)

请提供您正在尝试的一些代码,但是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