首页 > 解决方案 > 如何在 node.js 中将回调转换为异步等待

问题描述

在这里,我想通过调用在另一个模块中使用 vertica 数据getDataFromdb

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
}

标签: node.jsasynchronousasync-awaitcallbackasynccallback

解决方案


推荐阅读