JavaScript Asynchronous Programming with JavaScript Understanding Promises Handle Multiple Promises with Promise.all

Kostas Koutoupis
Kostas Koutoupis
15,010 Points

Promise.all() in node

I am trying to implement Promise.all() in node following this course. But all I'm getting is => Promise{pending}. The code seems to be working fine in the console browser but not on node.js

Any ideas why? My code is below. Many thanks!

//dependencies
const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
const xhr = new XMLHttpRequest();

// variables
const astrosUrl = 'http://api.open-notify.org/astros.json';
const wikiUrl = 'https://en.wikipedia.org/api/rest_v1/page/summary/';

//getJSON
getJSON = (url) => {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest(url);
    xhr.open('GET', url);
    xhr.onload = () => {
      if(xhr.status === 200){
        let data = JSON.parse(xhr.responseText);
        resolve(data);
      }else{
        reject(new Error(xhr.statusText));
      }
    }
    xhr.send();
  })
}

//get wiki data
getProfiles = (data) =>{
  const profiles = data.people.map(person => {
    return getJSON(wikiUrl+formatName(person.name));
  })
 return Promise.all(profiles);
}

//handle data
handleData = (data) =>{
  console.log(data);
}

//HELPER FUNCTIONS
formatName = (name)=>{
  return name.split(" ").join("_");
}

//run sequence
getJSON(astrosUrl)
.then(getProfiles)
.then(handleData)
.catch(error => console.log(error.message))