![](/img/trans.png)
[英]Promise.all Error: Uncaught (in promise) TypeError: #<Promise> is not iterable
[英]TypeError: #<Promise> is not iterable
我试图使用 promise.all 进行多个 api 调用,但由于某种原因它抛出以下错误
类型错误:# 不可迭代
我的 Promise 相当简单(这可能是我第二次使用 Promise.all)
componentWillMount() {
const id = this.props.location.pathname
let axiosHome = axios.get('/home')
let axiosUserData = axios.get("/profile/" + id)
Promise.all(axiosHome, axiosUserData).then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
}
问题:知道为什么我会收到这个错误吗? 另外,有人可以解释一下我们什么时候在promise中使用resolve关键字吗?
Promise.all
接受单个参数,它是一个Promise
数组- 后续参数将被丢弃。 因此,改为传入一个数组:
Promise.all([axiosHome, axiosUserData])
.then(...
我们什么时候在 promise 中使用 resolve 关键字?
resolve
不是关键字,它只是构造Promise
时使用的常规函数名称:
const prom = new Promise((resolve, reject) => {
// do some asynchronous stuff
if (ok) resolve();
else reject();
});
当Promise
像这样显式构造时,调用resolve()
来解析 Promise。 (当然,您可以将函数参数命名为任何名称,不必将其称为resolve
)
Promise.all() 接受方法数组(异步)并且数据可以作为数组分配给变量
例子:
let [axiosHomeData , axiosUserData] = await Promise.all([axiosHome, axiosUserData]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.