从函数中使用 nodejs 调用 https.get?

Calling https.get using nodejs from a function?

我正在尝试编写我的第一个 Alexa Skill,我正在执行一个工作正常的 http 请求,但是我想将其包装到一个我可以从我的主代码调用的函数中。

它不起作用,我不太确定如何将响应存储到变量中,这是我目前的代码:

function getValue(loc) {
    var endpoint = 'URLHERE'
    var something = ""
    var body = ""
    https.get(endpoint, (response) => {
        response.on('data', (chunk) => {
            body += chunk
        })
        response.on('end', () => {
            data = JSON.parse(body)
            something = data.result.node.value;
        })
    })
    return something;
}

这是在亚马逊上使用 lambda 函数使用 node.js

我使用

称其为 getValue('test')
var result = getValue('test')

它只是返回未定义。

有什么想法吗?谢谢

我想是因为它是一个异步调用,由于回调而没有设置值,但我已经尝试实现它但无法让它工作。

谢谢

您在 http.get 的回调之前从您的函数返回,混合了同步和异步行为。

所以您的函数是 returning something 尚未定义。

试试这个:

function getValue(loc,cb) {
    let endpoint = 'URLHERE'
    let something = ""
    let body = ""
    https.get(endpoint, (response) => {
        response.on('data', (chunk) => {
            body += chunk
        })
        response.on('end', () => {
            data = JSON.parse(body)
            cb(data.result.node.value);
        })
    })
}

getValue(test,(result)=>{
   //do something with result here;
});