Issue
I have a loop that sends x http requests.
In some cases user can send a so many requests and that could affect server performances.
I would like to convert existing logic and be able ho manage max requests number.
Sample code
for( let i; i<x; i++ ) {
this.subs= this.globalService.getData(formData, id).subscribe(data => {...}
}
How can I authorise triger only if the number of requests is < 10 for example otherwise wait for api response and check if current observers is less than 10 ?
It's important to subscribe sequentially and not send an array of data to not change code logic inside subscription.
Solution
Probably the easiest way is using mergeMap()
with an optional concurrency
option.
range(x)
.pipe(
mergeMap(i => this.globalService.getData(formData, i), 10),
)
.subscribe();
This way you can make mergeMap()
to perform at most 10 concurrent requests.
Answered By - martin
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.