如何使用Node JS在AsyncFunction中获取值?

时间:2019-07-11 04:36:56

标签: node.js async-await node-modules

我试图调用函数以将数据返回到异步函数中的字典。但是它不返回数据,而是返回异步函数,如何在异步函数中获取数据可以给我任何解决方案。

示例.js

function data()
{
    return "hai"
}

let dict = {sample:async () => {
    return (await data())
}}


console.log(await dict['sample'])

预期产量

hai

我得到了输出

[AsyncFunction: sample]

2 个答案:

答案 0 :(得分:2)

必须是:

onsole.log(await (dict['sample']()))

否则,您只是返回函数本身,而不是调用函数。

答案 1 :(得分:2)

在您的代码中,dict['sample']是一个异步函数。如果要从该函数获取值,则必须调用该异步函数,然后返回一个Promise。然后,您可以在该承诺上使用.then()await从中获取价值。

而且,您的函数data()不是async函数,因此您不应在其上使用await

将其分解为几个步骤以更好地理解它:

function data() {
    return "hai"
}

let dict = {
    sample: async () => {
        return data();
    }
};

let fn = dict['sample'];
fn().then(val => {
    console.log(val);
});  

或者,如果它们全部在async函数内部,则可以使用await而不是.then()来获取值。因此,如果您想要一个衬板:

console.log(await (dict['sample']()));

在任何一种情况下,async函数总是返回一个promise(当您调用该函数时),而从promise中获取值的两种方式是使用.then()或{{1} }。