RIVERE
RIVERE

Reputation: 35

Get the value of a Promise?

I'm using axios to make an AJAX request to the twitchtvapi. I assigned promise to a variable called example.

Is was it is possible to get the data inside of the Promise object? If I chain the .then method to the promise object I get an error that .then is not a function.

If I log the example variable I can see that there are three promises with the values that I'm looking to store into an array similar to

var example = users.map((item) => axios.get(`https://api.twitch.tv/kraken/streams/${item}?client_id=${client_id}`)
  .then(res => {
    console.log(res.data.stream);
    return res.data.stream;
  })
  .catch(error => {
    console.log(error);
  }));
console.log(example); //an array of three Promise objects 
console.log(example.then(res => res.data)) //returns error example.then is not a function
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

TLDR; How can I get the data from a Promise object? If I try to chain the .then method I get an error that says .then is not a function.

Thank you for any help in advance.

Upvotes: 1

Views: 254

Answers (1)

nbkhope
nbkhope

Reputation: 7474

The following code

users.map((item) => axios.get(`https://api.twitch.tv/kraken/streams/${item}?client_id=${client_id}`)

returns an array of promises. An array by itself is not a promise. If you wish to execute some code after all the promises have been resolved, you can use Promise.all

Promise.all(users.map(...))
  .then((responses) => {
    // deal with responses[0].data
    //           responses[1].data
    // etc.
  })
  .catch((error) => {
    // deal with error that occurred
  });

Upvotes: 2

Related Questions