我无法想出重复/循环Angular2(4)http.post请求指定(X)次数的正确方法。
让我举一个我希望实现的例子。我有以下http.post:
this.http.post(`http://url.com/param/name01`, dbJson, options)
我需要做的是使用单个可观察流来发布API X次,每次更改名称参数。我不想要像这样硬编码:
this.http.post(`http://url.com/param/name01`, body, options)
.switchMap(() => this.http.post(`http://url.com/param/name02`, body, options)
.switchMap(() => this.http.post(`http://url.com/param/name03`, body, options)
有没有人可以透露使用观察者获得结果的最佳方法?
提前致谢。
答案 0 :(得分:1)
您可以使用forkJoin
来循环所有请求
myNameRequest(): Observable<any> {
let requests: any[] = [];
let names: string[] = ['name1', 'name2', 'name3'];
return Observable.forkJoin(names.map(name => this.http.post(`http://url.com/param/${name}`, body, options)))
}
如果您必须在每次请求或所有请求之后执行任何操作,您可以在地图/订阅中执行此操作,您可以了解它
https://coryrylan.com/blog/angular-multiple-http-requests-with-rxjs https://www.metaltoad.com/blog/angular-2-http-observables-and-concurrent-data-loading
答案 1 :(得分:1)
如果您需要一个接一个地执行一个请求,请使用concat。您可以使用params创建一个observable数组,并使用spread运算符将它们传递给concat。
let names = ['name01', 'name02', 'name03'];
let obs$
= names.map(name=>Rx.Observable.of('path' + name));
Rx.Observable.concat(...obs$)
.subscribe(x=>console.log(x));