从异步函数中获取返回值

时间:2017-10-27 23:02:42

标签: javascript ecmascript-2017

我正在尝试捕获函数中两个服务调用的响应。要知道async和await会解决这个问题,并在下面尝试过。这里面是async函数ex - 我正在调用用户,公司端点和控制台日志显示完美,但是通过调用异步函数来检索相同的值是给予Promise Pending。我尝试了两个选项1.通过简单地调用异步函数 - 给予Promise Pending 2.通过调用await prefixed - 给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 reserved word
      // let resp = ex(); - giving Promise is pending.. 
      console.log(resp);

1 个答案:

答案 0 :(得分:0)

所有async个函数总是返回一个承诺。如果您什么都不返回,该函数将返回undefined的承诺。无论您返回什么内容都会被包含在承诺中,您需要await或致电then来访问内部的值。

resp.then(console.log)