How to Create a Bootstrap Spinner and Display on Screen till the data from the API loads ?

10 Jun, 2020
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”>
<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>

<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="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"        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 ="https://mygfgapi.free.beeceptor.com/my/api/path";  // 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 Spinnerfunction 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”
Bootstrap-Misc
HTML-Misc
JavaScript-Misc
Bootstrap
HTML
JavaScript
Web Technologies
HTML
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.