cklanac
3/8/2018 - 4:43 PM

Promises demo code

Promises demo code

/* global $ */
'use strict';

// instructor

const url = 'https://swapi.co/api/films/1';

// ======================================
console.log('first');

$.getJSON(url, (results) => {
  console.log('done');
  console.log(results);
});

console.log('second');

// Callback Hell
// alexa
// $.getJSON(url, (results) => {

//   //Anh
//   $.getJSON(url, (results) => {

//     //Bianca
//     $.getJSON(url, (results) => {

//       //Chris
//       $.getJSON(url, (results) => {
//         console.log('Chris done');
//         console.log(results);
//       });

//       console.log('Bianca done');
//       console.log(results);
//     });
//     console.log('Anh done');
//     console.log(results);
//   });

//   console.log('Alexa done');
//   console.log(results);
// });


// Chained Promises
// Alexa
// $.getJSON(url)
//   .then((results) => {
//     console.log('Alexa done');
//     console.log(results);
//     return $.getJSON(url);
//   })
//   .then((results) => {
//     console.log('Anh done');
//     console.log(results);
//     return $.getJSON(url);
//   })
//   .then((results) => {
//     console.log('Bianca done');
//     console.log(results);
//     return $.getJSON(url);
//   })
//   .then((results) => {
//     console.log('Chris done');
//     console.log(results);
//     return $.getJSON(url);
//   });

// Chained Promises useing SWAPI
// $.getJSON(url)
//   .then(film => {
//     console.log(film.title);
//     return $.getJSON(film.characters[0]);
//   }).then(character => {
//     console.log(character.name);
//     return $.getJSON(character.starships[0]);
//   }).then(starship => {
//     console.log(starship.name);
//   });

// Parallel Promises
const promiseA = $.getJSON('https://swapi.co/api/films/1/');
const promiseB = $.getJSON('https://swapi.co/api/films/2/');
const promiseC = $.getJSON('https://swapi.co/api/films/3/');

Promise.all([promiseA, promiseB, promiseC])
  .then(responses => {
    const [resA, resB, resC] = responses;
    console.log(resA.title);
    console.log(resB.title);
    console.log(resC.title);
  });

console.log('second');