The main page You can see that the solution is very simple and required just a dozen lines of code. Thus, code for the main page and for the waiting page will be a little bit more complex. The next step on the way to building more advanced waiting page is to modify the controller object to work with custom data objects thus enable asynchronous process to return these custom data objects and provide the waiting page with more data about the state of the process.As we are free to use an animated gif on the waiting page, the user will have fun while waiting for the process to complete. The main page This time we can make the user experience a little bit better by showing the progress bar indicating the real progress. For instance, if the process can be split into a few different steps it may notify the waiting page about the percentage of its completeness – this value can be stored in a field of custom data object used.The simplest solution to implement is which does not require tracking real progress of asynchronous process, thus showing only two states of the process – still running or already finished.