对于异步/等待的工作方式,我有些困惑
我有一些类似的功能
async getDataFromDB() {
let response = await fetch('...');
let data = await response.json();
return data;
}
async getData() {
if (...) {
let response = await this.getDataFromDB().then((res) => {
let response = await this.returnHello();
return response;
});
return response;
} else {
// ...
}
}
returnHello() {
return 'hello';
}
现在我何时console.log(getData())
应该返回'hello'
,但是它返回Promise {<pending>}
基本上我想要的结果是
const something = this.getData();
并且正确设置了字符串
答案 0 :(得分:2)
async
函数总是返回承诺。 async
/ await
的存在是为了简化使用承诺的语法,而不是消除承诺。
使用async
函数的代码将需要在promise上调用.then
,或者是async
函数本身和await
这个promise。
this.getData()
.then(something => {
});
const something = await this.getData();
答案 1 :(得分:0)
让我们尝试
async showData(){
console.log(await getData())
}
并运行
showData()
或在console.log(response)
函数中将return response;
放在getData()
之前。
希望对您有帮助