2

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 ?

2 Answers 2

4

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
    });
}
Sign up to request clarification or add additional context in comments.

Comments

0

I guess you can also do this using zip operator

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.