有人在http中使用过rxjs中的toPromise
和Promise.all
吗?请举个例子。
如何在promise.all
的组件中返回两个请求都成功的信息,例如API是否成功?
getPostAsync() {
return this.http.get('https://jsonplaceholder.typicode.com/posts')
.pipe(map((res:Response) => { return res.json();}))
.pipe(catchError((error) => { return throwError(error);}))
}
getPostAsync1() {
return this.http.get('https://jsonplaceholder.typicode.com/posts/1')
.pipe(map((res:Response) => { return res.json();}))
.pipe(catchError((error) => { return throwError(error);}))
}
答案 0 :(得分:2)
在处理请求时,我不会使用toPromise
或Promise.all
。最好使用可观察对象和运算符来处理它。我写了article about replacing Promises with RxJS。我会使用Promise.all
来监听两个或更多请求的完成,而不是forkJoin
。
答案 1 :(得分:0)
您可以将Combinelatest用于多个请求 https://www.learnrxjs.io/operators/combination/combinelatest.html
combineLatest(this.http.get('/api'), this.http.get('/api2'))
.subscribe((res: any) => {
const res = res[0];
const res2 = res[1];
});