【发布时间】:2021-12-28 15:53:24
【问题描述】:
我希望有人能帮助我理解为什么下面的代码不能正常工作。
在Expense Data 类中,我有一个函数listExpenses,它应该只在promise 被解决或被拒绝后才返回data。
但是,当我实例化一个新的 expenseData 对象并尝试记录费用列表时,我得到了一个待处理的 Promise。我本来希望 Promise 总是在这个阶段得到解决。
class ExpenseData {
constructor() {
this.client = new Client({ database: 'expenses' })
}
async listExpenses() {
await this.client.connect().catch(err => logAndExit(err));
let data = await this.client.query("SELECT * FROM expenses ORDER BY created_on ASC")
.catch(err => logAndExit(err))
return data;
}
}
let expenseData = new ExpenseData();
let myData = expenseData.listExpenses();
console.log(myData);
运行此代码后,我在控制台中看到以下内容:
Promise { <pending> }
【问题讨论】:
-
您的方法是异步的,但您不等待它。
let myData = await expenseData.listExpenses();? -
let x = await ...; return x;的行为与return ...相同
标签: javascript async-await promise es6-promise