获得承诺的价值?

问题描述 投票:1回答:1

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

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

如果我记录示例变量,我可以看到有三个promise我想要存储到类似于的数组中的值

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

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

javascript ajax reactjs
1个回答
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
  });
© www.soinside.com 2019 - 2024. All rights reserved.