从函数中使用 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 的回调之前从您的函数返回,混合了同步和异步行为。
所以您的函数是 return
ing 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;
});
我正在尝试编写我的第一个 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 的回调之前从您的函数返回,混合了同步和异步行为。
所以您的函数是 return
ing 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;
});