I've been in exactly the same situation as you and I've ended with splitting my logic into multiple steps. Now I am calling splunk in a loop to get results one by one (there is a bit complicated logic even hidden internally as a custom command not to move huge amount of the data back and forth). Every time I got the data in a loop I propagate it to UI to show it to user and I continue in processing of next record. I was not able to find out any other way how to implement "streaming" so UI user does not have to wait for long time until whole data set is ready. Hope this will help.