The only way to optimize this would be that the API you are calling accepts a multirow payload.
I don't see any other way to improve this.
What you can possibly do, is to have the async calls set a property which you can trigger off to check if the full call finished or not.
Still very difficult with an async setup since you don't know the order the calls will finish in.
But perhaps you can set a counter and a target count and each asynch service increases the counter by one and when it has reached target count, you know you are done.