Как передать один ответ другому запросу в проекте Angular 7?

#javascript #angular #rxjs

#javascript #angular #rxjs

Вопрос:

Привет, я работаю над своим проектом Angular 7. Я получаю один ответ от api, и я хочу интегрировать этот ответ в другой API, который приведет к успеху во всех других API.

Вот мой код :

 ngOnInit() {
  this.second()
}

first() {
  this.service.getId(id).resp.subscribe((res => {
    console.log(res);
    this.firstresp = res;
  });
}

second() {
  this.service.getId(this.firstresp).resp.subscribe((res => {
    console.log(res)
  });
}
  

Здесь проблема в том, что первая функция выполняется правильно, а вторая функция, я получаю ответ только после обновления страницы. Есть решение? TIA.

Ответ №1:

На самом деле это вопрос RXJS, а не angular. Вы хотите использовать switchMap:

 this.service.getId(id).resp.pipe(
   switchMap((res) => {
      return this.service.getId(res).resp;
   })
).subscribe((rep) => {
 ....
});
  

switchMap выше передает результат первого вызова во второй, а затем передает этот результат подписчику. Нет необходимости в firstresp etc.

Комментарии:

1. В этой подписке, если я ее консолирую, я получаю сообщение об ошибке. Сначала в switchmap ответ, который я получаю, в порядке.