繁体   English   中英

类型错误:#<Promise> 不可迭代

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM