如何在 for 循环之外返回
stuff
的值。我需要进行 api 调用i
多次并存储每次结果。某个地方可能有重复的问题和答案,但我找不到它。
function getResponse() {
var stuff = []
for (let i = 0; i < length; i++) {
axios.get(url + i)
.then(res => res.forEach(item => {
stuff.push(item)
}))
}
// How do I return stuff from this function ?
}
console.log(getResponse())
我尝试让这个函数只执行 1 次调用,然后循环调用另一个函数,但我得到
cannot read property then of undefined
。
如何从该函数返回内容?
你不能。就像“我想要明天的报纸”。那也行不通。您必须等到第二天才能阅读报纸,或者就您而言,直到所有数据都到达浏览器。你不能直接返回数据,而是一个 Promise 会在某个时候传递数据。在您的情况下,您可以使用
Promise.all
将承诺数组统一为解析为数组的承诺:
function getResponse() {
const promises = [];
for (let i = 0; i < length; i++) {
promises.push(axios.get(url + i));
}
return Promise.all(promises)
.then(results => [].concat(...results));
}
所以现在如果你这样做:
console.log(getResponse())
你得到了一个承诺。要获取实际数据,必须等待数据到达:
getResponse().then(console.log);
使用 while 循环而不是 for 循环,它对我有用