我正在尝试await在返回函数之前完成数据库查询,但是由于某种原因,我的方法似乎无法正常工作。

似乎该函数在await返回已解析的Promise之前返回。

var returnAfterReading = async () => {
    let myEntityJSONConst = {
        myEntity : {}
    }
    myEntityJSONConst["myEntity"] = await dbQueryPromise();

    return myEntityJSONConst;
}

console.log(JSON.stringify(returnAfterReading())) // {"myEntity":{}}


我究竟做错了什么?

谢谢大家。

最佳答案

在调用returnAfterReading()函数之前,您缺少等待:


  请注意,应在returnAfterReading()上下文中(在async函数中)调用async函数,否则您需要使用promise(例如returnAfterReading().then(data => { /* bla-bla */ })


const returnAfterReading = async () => {
    const myEntityJSONConst = {
        myEntity : {}
    }
    myEntityJSONConst["myEntity"] = await dbQueryPromise();

    return myEntityJSONConst;
}

// ... In some other async context
console.log(JSON.stringify(await returnAfterReading()));

10-04 15:33