Angular rxjs how to call multiple same http requests like one subscription?

For example I have multiple ids : [1,2,3,4,5] and then for each id I want to call delete api endpoint.Normally I would have to call it 5 times with forEach function :

ids.forEach(item => {
this.myService.delete(item).subscribe.....

}) 

But what if I want to combine it to one observable, so I could know when the loop has ended (complete state in rxjs) ?

Can I do something like this ?

>Solution :

You can first create the array of observables, then use forkJoin to execute them parallely!

deleteIds(ids: Array<number>) {
    // create a array of delete observables to be executed at once
    const deleteIds = ids.map(id => this.myService.delete(id));
    forkJoin(deleteIds).subscribe(() => {
        // execute the rest of the code
    });
}

Leave a Reply