Http после вызова и ожидания ответа внутри foreach и запускает следующий вызов, используя observables / angular - PullRequest
0 голосов
/ 09 мая 2018

// У меня был массив, который я использую 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();
}

Спасибо!

...