从异步函数返回值
Posted
技术标签:
【中文标题】从异步函数返回值【英文标题】:Return value from an async function 【发布时间】:2022-01-14 01:30:49 【问题描述】:如何?
我有以下承诺:
function reqGitActivity (url)
const options =
url: url,
headers:
'User-Agent': 'request'
return new Promise((resolve, reject) =>
request(options, (err, res, body) =>
if (err)
reject(err)
return
resolve(body)
)
)
然后我将这个 Promise 与 Async/Await 一起使用
async function githubActivity ()
const gh = await reqGitActivity(`https://api.github.com/users/$github/events`)
return gh
如果我执行函数:
console.log(JSON.parse(githubActivity()))
我只得到 Promise 而不是请求返回的值。
Promise
_c: [],
_a: undefined,
_s: 0,
_d: false,
_v: undefined,
_h: 0,
_n: false
但是如果我在gh
上放一个console.log,我会从请求中得到值,但我不想让githubActivity()
记录我想要返回的值。
我也试过这个:
async function githubActivity ()
return await reqGitActivity(`https://api.github.com/users/$github/events`)
.then(function (res)
return res
)
但我仍然只得到 Promise 而不是 resolve 的值。
有什么想法吗?
【问题讨论】:
你试过用 var gh = ... 代替 const gh = ... 吗? @TudorConstantin 是的,我仍然得到了承诺。 这太疯狂了——如果你放一个 console.log(gh);在返回gh之前,显示内容 @Tudor Constantin 是的。我也是,但返回时不起作用。 【参考方案1】:看来你只能access that value inside of a callback。
所以,不要使用console.log(JSON.parse(githubActivity()))
,而是使用:
githubActivity().then( body => console.log( JSON.parse( body ) ) )
【讨论】:
哦,我明白了!谢谢!我也在读这个:***.com/questions/35302431/…以上是关于从异步函数返回值的主要内容,如果未能解决你的问题,请参考以下文章