最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

从index.js调用函数时如何获得异步函数的完整值?

网站源码admin22浏览0评论

从index.js调用函数时如何获得异步函数的完整值?

从index.js调用函数时如何获得异步函数的完整值?

我是Node的新手,我正在尝试创建一个函数以分页进行API请求。该函数成功地为我提供了所需的输出,但是由于如何异步使用index.js中的.then()函数,我感到困惑。如果我在index.js中使用await,则会引发错误。我希望就如何解决此问题以及如何更好地理解异步/等待获得一些指导。

//hs-api.js
const request = require('request-promise');
const settings = require('./settings');
var all = []

let getReq = async (url) => {  
    var options = {
        'method': 'GET',
        'url': url,
        'headers': {
            'Content-Type': 'application/json'
        }
    }
    let results = await request(options, function async (error, response) { 
        if (error) {
            reject(error)
        } else {
            res = JSON.parse(response.body)
        }
    })

    all = all.concat(res.results)

    if(res.hasOwnProperty("paging")) {
        await getReq(`${res.paging.next.link}&apikey=${settings.api_key}`)
    } else {
        console.log(all)
        return all
    }
}

这里是我调用函数的地方

//index.js
let apiResponse = api.getReq(`/?apikey=${settings.api_key}`)
console.log(apiResponse)
回答如下:

截至今天(Node.js 14),您需要将其包装在一个函数中。

这样的东西

(async () => {
    let apiResponse = await api.getReq(`https://apiexample/?apikey=${settings.api_key}`)
    console.log(apiResponse)
})()

对于顶级proposal,有一个用于ES的await,它将可以运行

let apiResponse = await api.getReq(`https://apiexample/?apikey=${settings.api_key}`)
console.log(apiResponse)

没有async关键字。

Node.js(从版本10开始)对此功能提供了实验性支持。您需要使用--experimental-repl-await标志运行它>

发布评论

评论列表(0)

  1. 暂无评论