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

标签 json node.js request

我用这个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/

相关文章:

java - JSONObject无法通过方法调用转换转换为String

ios - 如何在我的应用程序中使用 ORKESerializer?

node.js - 在 Node.js 中,什么是并行执行(显式和隐式)的,什么是顺序执行的?

Node.js 可读流 _read 用法

javascript - 如何在Angular 6中发送ajax请求?

ios - 如何提取 JSON 数据以在 swift 2.0 的 UITableView 中动态应用?

javascript - JSON 结构帮助

javascript - Intellij Idea 警告 - "Promise returned is ignored"与 async/await

python - ThreadPoolExecutor + Requests == 死锁?

asp.net - 如何从 ASP.NET 中的输入字段请求数据?