为什么异步将返回值转为“ [object Promise]
”
这是我要工作的代码。...
function foo() {
let res = bar("HELLO")
console.log(res)
}
async function bar (text) {
text = text + await getData();
return (text)
}
function getData () {
return new Promise((resolve, reject) => {
// Do a lot of stuff to find myResult
resolve(myResult)
})
}
所以我的问题是...这怎么返回HELLO
function foo() {
let res = bar("HELLO")
console.log(res)
}
function bar (text) {
return (text)
}
这将返回[object Promise]
function foo() {
let res = bar("HELLO")
console.log(res)
}
async function bar (text) {
return (text)
}
如何获取异步函数以返回文本?
答案 0 :(得分:4)
异步函数的返回值自动包装在Promise中。为了使您使用async / await语法解开该包,您再次需要等待该函数。
所以在您的情况下:
function foo() {
let res = bar("HELLO")
console.log(res)
}
需要成为:
async function foo() {
let res = await bar("HELLO")
console.log(res)
}
或者您也可以通过promise-chaining方式处理它:
function foo() {
bar("HELLO").then(res => console.log(res))
}
答案 1 :(得分:2)
您需要使用.then()
。试试这个。
async function bar (text) {
return text;
}
var test = bar("hello");
test.then((value) => console.log(value));