You can run your background microflow in a task queue
I was going to post about this exact same question.
The discovery that the Task Queues commit after the primary microflow means that the polling sub microflow that I set up to track the process sits in an infinite loop due to the fact that the sub microflows are not updating the entity.
You would think that the sub microflows in the task queue would execute their commits outside of the main microflows but seems that this is not the case.
running tasks asynchronously is creating a new thread(s), this makes it impossible to give direct feedback to the original microflow.
What is possible, but a tricky solution is to 'flip a switch' for every task that is completed in the database. Create for every task an object before starting the flow, and set the boolean to complete at the end of the task. In the main flow, loop until all the objects for the tasks are completed. This creates the risk of an endless loop when one of the tasks fail. so restrict the time the flow loops is my advice.
Another solution is to work with something like a websocket to provide feedback directly to the page when the flows are completed, since the follow-up action is opening a page, a websocket can handle that as well.