【发布时间】:2019-11-27 22:00:13
【问题描述】:
我是异步/等待功能的新手。我有一个获取数据库信息的函数,我想让函数setUpDb() 等到承诺完成后再返回。
const dbInfo = this.setUpDb();
console.log(dbInfo);
async setUpDb() {
const appLoc = path.join(homedir(), ".tsa"); // temp db info
const f: string = path.join(appLoc, "config.json");
await fs.ensureFile(f);
const temp = await fs.readJson(f);
console.log(temp);
return {
dbHost: temp.dbHost,
dbUser: temp.dbUser,
dbPass: temp.dbPass
};
}
我当前的输出是:Promise { <pending> },然后是temp 中的所有信息。
我只需要让 return 等到它返回之前有值。这可能吗?
谢谢!!
【问题讨论】:
-
所有 JavaScript 函数同步返回。如果没有像自旋锁这样阻塞整个事件循环的东西,你不能让他们等待返回。
async只是让它们返回一个 Promise,但它们仍然在任何异步代码运行之前返回。
标签: node.js typescript async-await