The task is to display a spinner on the page until the data response from the API comes. We have taken bootstrap spinner to show the example.
Pre-requisite:
- You will need some knowledge about JavaScript fetch API.
- You will need a mock API for getting data.
Approach:
- Create necessary HTML, CSS, and JavaScript file for the task.
- In HTML file, link bootstrap in head section.
<link rel=”stylesheet” href=”https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css” integrity=”sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh” crossorigin=”anonymous”>
- Now take any spinner from “https://getbootstrap.com/docs/4.4/components/spinners/“, The spinner I had taken for the example is:
<div class="spinner-border text-primary" id="spinner"role="status"> <span class="sr-only">Loading...</span> </div>
- Now, spinner will have to be stopped once the data from the API loads.
- So, get the data from API by Fetch() API method.
- Store the data in a response variable.
- There is an if statement that checks if Response from API came or not.
- If Response came then there is a function hideSpinner() called.
- In that hideSpinner() function by using DOM manipulation, we set display of Spinner element to none.
HTML file:
<!DOCTYPE html> < html > < head > < script src = "script.js" ></ script > < title >Spinner</ title > < link rel = "stylesheet" href = "style.css" > < link rel = "stylesheet" href = integrity = "sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin = "anonymous" > </ head > < body > < div class = "spinner-border text-primary" id = "spinner" role = "status" > < span class = "sr-only" >Loading...</ span > </ div > < div id = "data" ></ div > </ body > </ html > |
JavaScript file:
// API url const api_url = // Defining async function async function getapi(url) { // Storing response const response = await fetch(url); // Storing data in form of JSON var apidata = await response.json(); console.log(apidata); if (response) { hideSpinner(); } document.getElementById( "data" ).innerHTML = `<h1>${apidata.data}</h1>`; } // Calling that async function getapi(api_url); // Function to hide the Spinner function hideSpinner() { document.getElementById( 'spinner' ) .style.display = 'none' ; } |
Output:
You can see in output window, spinner loads till the Data from API comes.
API link: “https://mygfgapi.free.beeceptor.com/my/api/path”