我正在尝试将数据从异步函数返回到非异步函数,它总是返回一个承诺,这里是我的代码
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在返回之前等待数据 我该怎么办
答案 0 :(得分:1)
我不能在async函数调用上使用await所以我需要async函数getById在返回之前等待数据
这不是async function
所做的。顾名思义,它们是异步,它们确实会返回对结果的承诺。它们不会同步阻塞和返回。你必须等待,没有办法绕过它。通过调用async
创建函数。