Typescript angular2 rxjs可观测分叉连接
即使其中一个请求失败,也可以继续forkjoin http.get请求 我正在寻找一个类似的函数$q.allSettled in angular2 见示例: Kab使用Observable.forkJoin()运行多个并发http.get()请求。 如果任何单个请求失败,整个操作将导致错误状态Typescript angular2 rxjs可观测分叉连接,typescript,angular,rxjs,observable,Typescript,Angular,Rxjs,Observable,即使其中一个请求失败,也可以继续forkjoin http.get请求 我正在寻找一个类似的函数$q.allSettled in angular2 见示例: Kab使用Observable.forkJoin()运行多个并发http.get()请求。 如果任何单个请求失败,整个操作将导致错误状态 getBooksAndMovies() { return Observable.forkJoin( this.http.get('/app/books.json').map((res
getBooksAndMovies() {
return Observable.forkJoin(
this.http.get('/app/books.json').map((res:Response) => res.json()),
this.http.get('/app/movies.json').map((res:Response) => res.json())
);
但您可以将额外的GET请求放入错误处理程序:
getBooksAndMovies() {
Observable.forkJoin(
this.http.get('/app/books.json').map((res:Response) => res.json()),
this.http.get('/app/movies.json').map((res:Response) => res.json())
).subscribe(
data => {
this.books = data[0]
this.movies = data[1]
},
err => console.error(err)
);
在这种情况下,您可以利用每个可观察对象的
catch
操作符截取错误并返回另一个可观察对象
以下是一个示例:
return Observable.forkJoin(
this.http.get('/some-url')
.map((res:Response) => res.json())
.catch(res:Response => Observable.of({}),
this.http.get('/some-other-url')
.map((res:Response) => res.json())
.catch(res:Response => Observable.of({}),
);
感谢您的回复,您能提供一个例子吗?向下投票,因为这并不能解决OPs的问题,即如果其中一个请求失败,如何继续请求。forkJoin是等待未失败的请求完成,还是立即自行失败?@AngJobs是否有办法处理每个数组元素的错误?我需要用失败的特定元素的错误消息更新UI。我在res:块之后添加了一个(err)=>{},但它只是跳到了整个数组的最终失败处。对just return empty()或使用rxjs filter()返回null\undefined\{}非常烦人,但是empty()或filter()不使用forkJoin,因为需要“要求所有源观测值至少发出一个值”,如中所述。遗憾的是,在2020年使用“这种”方法
return Observable.forkJoin(
this.http.get('/some-url')
.map((res:Response) => res.json())
.catch(res:Response => Observable.of({}),
this.http.get('/some-other-url')
.map((res:Response) => res.json())
.catch(res:Response => Observable.of({}),
);