繁体   English   中英

从异步函数返回值

[英]Return 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 一起使用

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 而不是解析的值。

有什么想法吗?

看来您只能在回调内部访问该值

因此,代替使用console.log(JSON.parse(githubActivity())) ,请使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM