等待返回未定义

时间:2020-10-22 13:31:22

标签: express asynchronous

我正在与Express Server合作,试图从文件中读取数据并将其返回给其他功能。

我的代码结构如下:

async function getUser(req) { 
   fs.readFile(cfg.fileDefaults, (err, defaults) => {
      do something
      return user;
    }
}

module.exports = {getUser}

在控制器中,我调用了该函数

  static getTable(req, res, next) {
    async function search() {
      user = await  getUser(req);  //return undefined
     getUser(req).then((a) => {
           console.log(a);       //second try, return undefined
          })
    }
    search();
}

我应该如何正确地称呼它?

1 个答案:

答案 0 :(得分:1)

const fs = require('fs')
function getUser(req) {
  return new Promise((resolve, reject) => {
    fs.readFile(cfg.fileDefaults, (err, defaults) => {
      //do something
      const user = { hellow: 'world' }
      resolve(user)
    })
  })
}
module.exports = { getUser }

在控制器中

static getTable(req, res, next) {
    async function search() {
      user = await getUser(req); // return { hellow: 'world' }
      res.end(JSON.stringify(user, null, '  '))
    }
    search().catch((err) => {
      console.log('err',err)
      res.status(500)
      res.end('error')
    })
}