Rxjs 如何一个接一个地向服务器发送请求?

Rxjs 如何一个接一个地向服务器发送请求?,rxjs,rxjs5,rxjs6,Rxjs,Rxjs5,Rxjs6,如何正确发送RxJS请求,当有4个不同的API端点时,我需要请求每个端点,直到上一个端点不返回数据 模式是: Request 1 -> Return Void Request 2 -> Returned data, stop working and return data Request 3 -> Will fail req1$ = of(response); req2$ = of(response); req1$.pipe( flatMap((result) =>

如何正确发送RxJS请求,当有4个不同的API端点时,我需要请求每个端点,直到上一个端点不返回数据

模式是:

Request 1 -> Return Void
Request 2 -> Returned data, stop working and return data
Request 3 -> Will fail
req1$ = of(response);
req2$ = of(response);

req1$.pipe( flatMap((result) => {
   if (result) { return of(result); } else {return of([]);}
}));
结果是:

Request 1 -> Return Void
Request 2 -> Returned data, stop working and return data
Request 3 -> Will fail
req1$ = of(response);
req2$ = of(response);

req1$.pipe( flatMap((result) => {
   if (result) { return of(result); } else {return of([]);}
}));
其中一个请求只产生一个结果

我试过这个:

Request 1 -> Return Void
Request 2 -> Returned data, stop working and return data
Request 3 -> Will fail
req1$ = of(response);
req2$ = of(response);

req1$.pipe( flatMap((result) => {
   if (result) { return of(result); } else {return of([]);}
}));

我认为你需要做一个手动链,比如:

const getValueFromServer$=req1$.pipe(flatMap=>result?of(result):firstFallback$);
const firstFallback$=req2$.pipe(flatMap=>result?of(result):secondFallback$)
const secondFallback$=req3$.pipe(flatMap=>result?of(result):req4$)
getValueFromServer$.subscribe(console.log)

您能否编辑有问题的代码,很难理解什么是“观察者优先”,等等。哪个观察者订阅?