从异步函数返回值 [英] Return value from an async function

查看:87
本文介绍了从异步函数返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从异步函数返回值?

How can I return the value from an async function?

我有以下承诺:

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一起使用

Then I use this Promise with Async/Await

async function githubActivity () {
    const gh = await reqGitActivity(`https://api.github.com/users/${github}/events`)
    return gh
}

如果我执行以下功能:

console.log(JSON.parse(githubActivity()))

我仅收到Promise,但没有收到请求返回的值.

I only get the Promise but not the value returned from the request.

Promise {
     _c: [],
     _a: undefined,
     _s: 0,
     _d: false,
     _v: undefined,
     _h: 0,
     _n: false }

但是,如果将console.log放在gh上,我从请求中获取了值,但是我不想githubActivity()记录要返回值的值.

But if I put a console.log on the gh I got the value from the request, but I don't want githubActivity() to log the value I want to return the value.

我也尝试过:

async function githubActivity () {
    return await reqGitActivity(`https://api.github.com/users/${github}/events`)
    .then(function (res) {
      return res
    })
}

但是我仍然只能获得Promise,而不能从决心中获得价值.

But I still only get the Promise and not the value from the resolve.

有什么想法吗?

推荐答案

您似乎只能因此,使用

代替console.log(JSON.parse(githubActivity())):

githubActivity().then( body => console.log( JSON.parse( body ) ) )

这篇关于从异步函数返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆