Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待承诺-ES6_Javascript_Es6 Promise - Fatal编程技术网

Javascript 等待承诺-ES6

Javascript 等待承诺-ES6,javascript,es6-promise,Javascript,Es6 Promise,我试图捕获函数中两个服务调用的响应。知道async和Wait可以解决这个问题,并在下面进行了尝试。 在异步函数ex中,我正在向用户发出一个调用,公司的端点和控制台日志显示得非常完美,但在通过调用异步函数检索相同值的同时,却给出了待定的承诺。我尝试了两种选择 1.通过简单地调用异步函数-给予承诺挂起 2.通过使用带有wait前缀的调用,giving await是一个保留字 请让我知道如何从这个 const service = { getUsers: () => axios.get

我试图捕获函数中两个服务调用的响应。知道async和Wait可以解决这个问题,并在下面进行了尝试。 在异步函数ex中,我正在向用户发出一个调用,公司的端点和控制台日志显示得非常完美,但在通过调用异步函数检索相同值的同时,却给出了待定的承诺。我尝试了两种选择 1.通过简单地调用异步函数-给予承诺挂起 2.通过使用带有wait前缀的调用,giving 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
不会神奇地允许您同步执行异步操作。不管你用什么方法削减它,你仍然需要在某个时刻等待它的值

所以你有两个选择

  • 将要对检索到的值执行的操作放在异步函数中:
  • 调用
    。然后
    承诺
    ex()
    返回并使用返回的值:
  • 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);
        }
    }
    
    ex().then(values => {
        console.log(values);
    });