使用请求模块检索JSON并返回值

Dio*_*ung 3 json request node.js

我使用这个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;
}
Run Code Online (Sandbox Code Playgroud)

token总是如此undefined.我做错了什么?

Rob*_*kal 6

你已陷入经典节点异步陷阱.模块的顶级函数中的代码将在内部请求函数中的回调发生之前返回.返回时尚未定义令牌.

最简单的解决方案是从外部函数传递回调并从返回到请求函数的回调中调用它.如果不满意,可以使用$ q库返回一个promise或找一个可以进行同步http调用的模块.