获得承诺的价值?

时间:2017-12-20 16:41:09

标签: javascript ajax reactjs

我使用axios向twitchtvapi发出AJAX请求。我为一个名为example的变量分配了promise。

是否有可能获取Promise对象内的数据?如果我将.then方法链接到promise对象,我会收到一个错误,即.then不是函数。

如果我记录示例变量,我可以看到有三个承诺,我希望将值存储到类似于

的数组中



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>
&#13;
&#13;
&#13;

TLDR;如何从Promise对象获取数据?如果我尝试链接.then方法,我会收到一个错误,说明.then不是函数。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:2)

以下代码

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

返回一个promises数组。数组本身并不是一个承诺。如果您希望在所有承诺解决后执行某些代码,则可以使用Promise.all

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