To accommodate the asynchronous loading of web applications, I like to use an `initializeApp` function within the `DOMContentLoaded` event listener to capture all application startup tasks in one place.
```javascript title="JavaScript.html"
// initialize app
function initializeApp(data){
setData(data);
populateUI(data);
document.getElementById('spinner').classList.add('d-none');
}
// DOM Content Loaded event listener
document.addEventListener('DOMContentLoaded', function(){
// Get data
google.script.run
.withSuccessHandler(initializeApp)
.getData();
}
```