#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 ответ, который я получаю, в порядке.