我试图调用函数以将数据返回到异步函数中的字典。但是它不返回数据,而是返回异步函数,如何在异步函数中获取数据可以给我任何解决方案。
示例.js
function data()
{
return "hai"
}
let dict = {sample:async () => {
return (await data())
}}
console.log(await dict['sample'])
预期产量
hai
我得到了输出
[AsyncFunction: sample]
答案 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} }。