// У меня был массив, который я использую foreach для зацикливания и выполнения http-звонка.Дело в том, что мне нужно дождаться ответа об успехе / ошибке и вызвать второй http-вызов, а затем третий из индекса массива.Я попытался использовать forkJoin, но он вызывает ответ в конце самого массива.Кто-нибудь может помочь мне решить эту проблему, пожалуйста?
Мой пример кода выглядит следующим образом:
let cars= [
{
color:'red',
brand:'honda'
},
{
color:'white'
brand:'audi'
}
];
//Component
let observables = cars.map(car => this.carService.getCarByBrand(car));
// forkJoin the array/collection of observables
let source = Observable.forkJoin(observables);
source.subscribe(x => console.log(x);
//Component
//trigerring point
return this.carQuestion().do(response => {
selectedCar = response;
});
private carQuestion(){
let observables = cars.map(car =>
this.carService.carSelection(this.language, car));
let source = concat(...observables);
source.subscribe(x => console.log(x));
}
//carService
//carSelection should trigger on each call and wait for the response
carSelection(language: string, car){
//post call where it opens modal. Note if i send a single response
// without the cars loop it works fine
return this.inputService.getInput(
inputService.mapper,
).flatMap(response => {
if (response.yes) {
return Observable.of({
selectedCar: response.data,
});
}
else {
return Observable.of(null);
}
}).first();
}
Спасибо!