Couple of concepts you need to understand.
The purpose of Durable Functions is to encapsulate a long-running process. You have an orchestrator who orchestrates your process steps. Process steps are written as Activity Functions. Since the process steps can be long-running, the orchestrator keeps track of the steps but for the outside world will give a URI where you can query the status of the job. The consumers can keep checking the status query URI to see if the job is finished or not. Once finished you will get the data that you expect. This is the usual practice and the preferred approach.
Another way is: Within your Durable function orchestrator - you need to have a while loop that keeps checking for the status of the activity function. If the activity is not finished - the loop will continue to check. If the status of the activity is done, then breaks the loop and returns the data back to the consumer. This is not a preferred approach as you don't know how much time the child activity takes. By doing this way - your consumer have no clue what is happening and will have to wait indefinitely before they get the response back. I wouldn't do it recommend this approach.