我用这个request
在 Nodejs 中发出 HTTP 请求的模块
示例代码:
module.exports.getToken = function(){
var token ;
request(validLoginRequest, function(err,resp,body){
var json = JSON.parse(JSON.stringify(body));
console.log("from request(): token=" + json.accesstoken);
token = json.accesstoken;
});
console.log("getToken() returns:" + token);
return token;
}
但是token
总是undefined
。我做错了什么?
最佳答案
您已陷入经典的 Node 异步陷阱。模块顶层函数中的代码将在内部请求函数中的回调发生之前返回。返回时尚未定义 token 。
最简单的解决方案是从外部函数向下传递一个回调,然后从返回到请求函数的回调中调用它。如果这不令人满意,您可以使用 $q 库返回一个 promise 或找到一个将执行同步 http 调用的模块。
关于json - 使用请求模块检索 JSON 并返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21811305/