首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeError:#<Promise>是不可迭代的

TypeError:#<Promise>是不可迭代的
EN

Stack Overflow用户
提问于 2018-10-29 02:39:57
回答 2查看 20.2K关注 0票数 27

我试图使用promise.all执行多个api调用,但出于某种原因,它引发了以下错误

TypeError:#不可迭代

我的承诺相当简单(这可能是我第二次使用Promise.all)

代码语言:javascript
运行
复制
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)
    })
  }

问题:我知道为什么我会犯这个错误吗?另外,有人还能解释一下什么时候我们用“解决”关键字和“承诺”吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-29 02:41:12

Promise.all接受一个参数,这是一个Promise__s数组--随后的参数被丢弃。因此,输入一个数组,而不是:

代码语言:javascript
运行
复制
Promise.all([axiosHome,  axiosUserData])
  .then(...

什么时候我们用“承诺”关键字来解决问题?

resolve不是关键字,它只是构造Promise时使用的常规函数名

代码语言:javascript
运行
复制
const prom = new Promise((resolve, reject) => {
  // do some asynchronous stuff
  if (ok) resolve();
  else reject();
});

当像这样显式地构造Promise时,调用resolve()来解决承诺。(当然,可以将函数参数命名为任何东西,不一定要调用resolve)

票数 42
EN

Stack Overflow用户

发布于 2020-09-21 02:58:12

Promise.all()接受方法数组(异步),数据可以作为数组分配给变量

示例:

代码语言:javascript
运行
复制
let [axiosHomeData , axiosUserData] = await Promise.all([axiosHome,  axiosUserData]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53038032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档