Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 等待所有有序的观测值完成RxJs_Angular_Rxjs - Fatal编程技术网

Angular 等待所有有序的观测值完成RxJs

Angular 等待所有有序的观测值完成RxJs,angular,rxjs,Angular,Rxjs,我有一个场景,其中必须按顺序执行三个http请求,在所有三个请求都发出一个值之后,我必须执行重定向 我使用concat实现了这一点 concat(request1$, request2$, request3$).subscribe( () => {}, (err) => {}, () => redirect... ) 但是我想知道是否有一个操作符专门执行此操作(按顺序执行,并且仅当所有可观察对象发出时发出)。您可以使用zip函数 在所有可观察对象发出后,将值

我有一个场景,其中必须按顺序执行三个http请求,在所有三个请求都发出一个值之后,我必须执行重定向

我使用concat实现了这一点

concat(request1$, request2$, request3$).subscribe(
   () => {},
   (err) => {},
   () => redirect...
)

但是我想知道是否有一个操作符专门执行此操作(按顺序执行,并且仅当所有可观察对象发出时发出)。

您可以使用
zip
函数

在所有可观察对象发出后,将值作为数组发出

例如


您可以使用
zip
功能

在所有可观察对象发出后,将值作为数组发出

例如


concat
是正确的选择。如果您希望在
下一次
回调中执行重定向,而不是在
完成
回调中执行重定向,则可以将
.pipe(toArray())
.pipe(last())
添加到您的
concat
可观察对象中。您还可以使用
concatMap
switchMap
链接您的请求,但这样做不会更优雅。您希望在这里可以看到什么?数组、单个值还是一系列值?我们知道您希望观察结果按顺序完成,但请澄清输出。您找到解决方案了吗?
concat
是正确的方法。如果您希望在
下一次
回调中执行重定向,而不是在
完成
回调中执行重定向,则可以将
.pipe(toArray())
.pipe(last())
添加到您的
concat
可观察对象中。您还可以使用
concatMap
switchMap
链接您的请求,但这样做不会更优雅。您希望在这里可以看到什么?数组、单个值还是一系列值?我们理解您希望观察结果按顺序完成,但请澄清输出。您找到解决方案了吗?
zip
不会按顺序执行给定的观察结果。
zip
不会按顺序执行给定的观察结果。