繁体   English   中英

获得 Promise 挂起 ..- ES6

[英]Getting Promise pending ..- ES6

我试图在一个函数中捕获两个服务调用的响应。 知道 async 和 await 将解决这个目的并在下面尝试。 在 async 函数内部,ex - 我正在向用户、公司端点和控制台日志发出呼叫,显示完美,但是通过调用 async 函数检索相同的值时,会给出 Promise Pending。 我尝试了两个选项 1. 通过简单地调用异步函数 - 给予 Promise Pending 2. 通过以 await 前缀调用 - 给予 await 是一个保留字。

请让我知道如何从这里捕获响应......

  const service = {
    getUsers: () => axios.get(`http://localhost:3000/users`),
    getCompanies: () => axios.get('http://localhost:3000/companies')
  };

  let ex = async () => {
    let users = {};
    let companies = {};
    try {
       users =   await service.getUsers()
       companies = await  service.getCompanies()

      console.log('Example ', {
        users: users.data,
        companies: companies.data
      })

    } catch (err) {
      console.log(err);
    }
    return  { users, companies};
  };
  //let resp = await ex(); - Giving await is a key word
   let resp = ex(); - Giving Promise pending
  console.log(resp);

async / await不会神奇地允许您同步执行异步操作。 无论你如何削减它,你仍然不得不在某个时候等待价值。

所以你有两个选择。

  1. 将您想要对检索到的值执行的操作放在异步函数中
let ex = async () => {
    let users = {};
    let companies = {};
    try {
        users =   await service.getUsers()
        companies = await  service.getCompanies()

        // DO STUFF WITH users AND companies HERE    

    } catch (err) {
      console.log(err);
    }
}
  1. ex()返回的承诺上调用.then并使用返回的值:
ex().then(values => {
    console.log(values);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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