Я полагаю, что вы хотите вызвать sendData (), когда все ваши запросы будут выполнены, и сделать это через определенный интервал.Попробуйте сделать что-то вроде:
ngOnInit() {
this.timer = setInterval(() => {
if (!this.activeObservable) {
this.sendData().subscribe((data) => {
console.log(data);
})
}
}, 5000)
}
sendData() {
this.activeObservable = true;
// probably you are calling some service to get a fresh lisyt of data and do post requests over them
let serviceList = [1,2,3,4,5]; // consider this is your sendData
// create observables in a loop, don't subscribe them:
// for you, something like:
//let allPostData = serviceList.map(service => this.api.post(url, service));
let dummyPostData = serviceList.map(service => of(service));
return forkJoin(...dummyPostData).pipe(tap(_ => {this.activeObservable = false;}));
}
ngOnDestroy() {
if (this.timer) {
clearTimeout(this.timer)
}
}
У меня в классе есть флаг, который сообщает, все ли мои запросы выполнены, только если я снова вызываю sendData (), посмотрите, как я устанавливаю activeObservable
https://stackblitz.com/edit/angular-ggwnxv
Для обработки ошибок в отдельных вызовах API есть что-то вроде:
let allPostData = serviceList.map(service => this.api.post(url, service).pipe(
catchError((e) => { return throwError(e); // handle your error here, can also return of(e) }))
);