I'm trying to loop the http requests using merge
operator.
Service:
addData(data) {
return this.http
.post(this.url, data)
.map(resp => {
return resp;
});
}
Component:
addData(data) {
if (data.length != 0) {
let respObs: Observable<Response>[] = [];
data.forEach(element => {
respObs.push(this.addService.addData(element));
});
Observable.merge(respObs)
.subscribe(resp => {
console.log(resp); // Observable object not the Response object is getting logged.
}, err => {
console.log(err);
});
}
}
Versions Used:
Angular: 4.3.5
RxJS: 5.1.0
When the network console is checked I see the http calls were never made and the Observable objects are logged instead of the responses from the http calls.
For Rxjs 5, you need to pass the Observables as a comma separated list. Try this:
Observable.merge(...respObs)
.subscribe(resp => {
console.log(resp); // Observable object not the Response object is getting logged.
}, err => {
console.log(err);
});