我使用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;
TLDR;如何从Promise对象获取数据?如果我尝试链接.then方法,我会收到一个错误,说明.then不是函数。
感谢您提前提供任何帮助。
答案 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
});