如何在 node.js 中将回调转换为异步等待

发布时间:2021-03-08 08:02

这里我想通过调用 getDataFromdb

在另一个模块中使用 vertica 数据
async function getDataFromdb() {
  const connection = await vertica.connect(config);
  const result = connection.query('select * from person', (err, result) => {
    if (result) {
      verticadata = map(result);
      console.log(verticadata);
      return verticadata;//->returning from callback
    }
    console.log(result);//->Here i want data but giving the connection details
  });
}

但后来知道我不能从回调中返回vertica数据,我们需要将回调函数传递给它,它会在完成后执行我改成这样

async function getDataFromdb(fn) {
  const connection = await vertica.connect(config);
  const result = connection.query('select * from person', (err, result) => {
    if (result) {
      verticadata = map(result);
      fn(verticadata);
      return verticadata; //->returning from callback
    }
    console.log(result); //->Here i want data but giving the connection details
  });
}

function get(fn) {
  getDataFromdb(verticaData => fn(verticaData));
}

我已经导出了上面的 get 函数并在下面的另一个模块中使用了它

getEx() {
  get(function(verticaData) {
      console.log(verticaData)
      //But i want to return the value out of this
    }
  }
}

但我想再次将值返回给 getEX。再次像上面的场景

当我知道使用 async/await 之后就很容易了

async function getDataFromdb() {
  const connection = await vertica.connect(config)
  const result = await connection.query("select * from person")
  console.log(result) -- > giving the connection details not the data how to work on this
}
回答1