js babel返回await不起作用

时间:2016-09-15 13:53:21

标签: javascript asynchronous async-await babeljs

我正在尝试将数据从异步函数返回到非异步函数,它总是返回一个承诺,这里是我的代码

static async getById(id){
    const db = await mongodb;
    const mongoId = new ObjectID(id);
    return await db.collection(Restaurant.collectionName).findOne({_id:mongoId});
  }
const obj = Restaurant.getById(data);//called in a non async function so i cannot use await 
        return new Restaurant(obj);

如注释中所述,我不能在async函数调用上使用await所以我需要async函数getById在返回之前等待数据 我该怎么办

1 个答案:

答案 0 :(得分:1)

  

我不能在async函数调用上使用await所以我需要async函数getById在返回之前等待数据

这不是async function所做的。顾名思义,它们是异步,它们确实会返回对结果的承诺。它们不会同步阻塞和返回。你必须等待,没有办法绕过它。通过调用async创建函数。