Home

Fetch movie info with Async/Await


Pulp Fiction

Genre: Crime, Drama
Released: 14 Oct 1994
Actors: John Travolta, Uma Thurman, Samuel L. Jackson
Director: Quentin Tarantino


The lives of two mob hitmen, a boxer, a gangster and his wife, and a pair of diner bandits intertwine in four tales of violence and redemption.


const omdbapi = 'https://www.omdbapi.com/';
const spinner = document.querySelector('.spinner');
const form = document.querySelector('form');

function updatePage(movie) {
    // info if movie not found
    let info = `
          <div class="card warning full-width">
            <p>No info found for <b>${title.value}</b></p>
          </div>`;
    // overwrite info if the movie is found
    if (movie.Response === 'True') {
        const poster = movie.Poster && movie.Poster.length > 10 ? `<img src="${movie.Poster}">` : '';
        info = `
            <div class="row">
              <div class="col-sm-6">${poster}</div>
              <div class="col-sm-6">
                <h2>${movie.Title}</h2>
                <p><b>Genre: </b>${movie.Genre}<br>
                <b>Released: </b>${movie.Released}<br>
                <b>Actors: </b>${movie.Actors}<br>
                <b>Director: </b>${movie.Director}<br></p>
                <hr>
                <p class="text-justify">${movie.Plot}</p>
              </div>
            </div>`;
    }
    document.getElementById('movieContainer').innerHTML = info;
}

async function fetchMovie(url) {
    try {
        const response = await fetch(url);
        if (!response.ok) {
            throw new Error(`An error has occurred: ${response.status}  ${response.statusText}`); // check for errors
        }
        const movie = await response.json();
        updatePage(movie);
    } catch (error) {
        console.error(error);
    }
    spinner.classList.add('hidden');
}

form.addEventListener('submit', (e) => {
    e.preventDefault();
    const data = new FormData(form);
    const queryString = new URLSearchParams(data).toString();
    spinner.classList.remove('hidden');
    fetchMovie(`${omdbapi}?${queryString}`);
});
form.dispatchEvent(new Event('submit'));