我目前在NodeJS中做一些工作,现在遇到以下问题:
当我从HTTP请求中获取JSON对象并想返回它时,它显示为"undefined"
。
这是我无法使用的NodeJS代码:
function verifyUser(uname,pword){
var options = {
url: 'CENSORED',
method: 'POST',
headers: headers,
form: {'Username':uname, 'Password':pword, 'Key':key}
}
request(options,function(error,response,body){
if(!error && response.statusCode == 200){
return body;
}
})
}
var test1 = verifyUser("RobDeFlop","CENSORED");
console.log(test1);
但是当我将return
替换为console.log
时,它向我显示了json对象。
我希望有人可以帮助我:)
答案 0 :(得分:1)
啊,第一次在节点上学习异步js的乐趣:3
正如@Mark_M所提到的,仅在处理请求后才调用请求中的函数。结果,您无法从verifyUser()函数返回变量。验证用户发送请求后,verifyUser()立即返回,并在收到响应后调用request()中的函数。
理想情况下,您应该通过提供回调函数来遵循异步流程:
//We'll define some function called 'callback'
function verifyUser(uname,pword, callback){
var options = {
url: 'CENSORED',
method: 'POST',
headers: headers,
form: {'Username':uname, 'Password':pword, 'Key':key}
}
request(options,callback);
// Here I've changed your inline callback function to the one passed to verifyUser as an argument.
}
// Then, your main code:
verifyuser("RobDeFlop","CENSORED", next);
function next(error,response,body){
if(!error && response.statusCode == 200){
//Do useful stuff with the body here.
}
})
}