如何获取异步函数以返回文本

时间:2018-07-04 07:19:57

标签: javascript async-await

为什么异步将返回值转为“ [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)
}

如何获取异步函数以返回文本?

2 个答案:

答案 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));