В моем проекте Angular я делаю какой-то вызов HttpClient, и после ответа мне нужно проверить его тело и выполнить другой вызов HttpClient или нет, в зависимости от первого ответа. Также мне нужно на некоторое время задержать выполнение второго вызова HttpClient.
Я могу сделать это с помощью оператора switchMap
, но я хотел бы знать , как правильно отложить второй вызов http way.
Вот очень простой пример:
export class AppComponent {
ngOnInit() {
this.execute().subscribe(r => console.log(r))
}
execute(): Observable<string> {
return this.http1Call().pipe(switchMap((r) => {
// Checking if 2d http call must be executed or not
if (r === '1st call') {
console.log('---Invalid 1st call, executing 2d')
// TODO: Is that correct way to execute http2Call with delay ???
return of({}).pipe(delay(3000), switchMap(() => this.http2Call()))
}
return of(r);
}));
}
http1Call(): Observable<string> {
return of('1st call').pipe(delay(1000));
}
http2Call(): Observable<string> {
console.log('------Inside http2Call')
return of('--------2d call response').pipe(delay(3000));
}
}