weixin_33713350 2017-12-20 16:41 采纳率: 0%
浏览 23

获得承诺的价值?

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.

</div>
  • 写回答

1条回答 默认 最新

  • weixin_33697898 2017-12-20 17:31
    关注

    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
      });
    
    评论

报告相同问题?