javascript - NodeJS 返回 http.request

标签 javascript node.js

你好,现在我知道 NodeJS 是异步的(老实说,我仍在努力了解这一点)。

我目前面临的问题是我试图执行 http.request 来接收一些 JSON 数据。这很好,但我需要的是将这些数据返回给一个变量。我相信我需要做一个回调函数? (根据我对此事的了解)

我目前拥有的代码:

var http = require('http');
pCLatLng = '';

function postCodeCheck() {
    var pCode = { 
        host: 'geo.jamiethompson.co.uk',
        path: "/" + 'SW1A2AA' + ".json" 
    };

    http.request(pCode).on('response', function(response) {
        var data = '';
        response.on("data", function (chunk) {
            data += chunk;
        });
        response.on('end', function () {
            pCJSON = JSON.parse(data);
            pCLatLng = pCJSON;
        });
        }).end();
}

console.log(pCLatLng);

这显然是在输出“undefined”;当返回“hi”或其中的任何内容时,我尝试返回 response.on('end') 而不是 NodeJS 输出有关该站点的信息。如果有人可以提供帮助,我们将不胜感激。

最佳答案

console.log(pCLatLng); 需要在 response.on('end' 回调内部(或在调用的东西内部)。值不是在触发该回调之前可用。

尝试这样的事情:

function postCodeCheck(callback) {
    var pCode = { 
        host: 'geo.jamiethompson.co.uk',
        path: "/" + 'SW1A2AA' + ".json" 
    };

    http.request(pCode).on('response', function(response) {
        var data = '';
        response.on("data", function (chunk) {
            data += chunk;
        });
        response.on('end', function () {
            callback(JSON.parse(data));
        });
        }).end();
}

postCodeCheck(function (pCLatLng)
{
    console.log(pCLatLng);
});

关于javascript - NodeJS 返回 http.request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332856/

相关文章:

javascript - jsRender 递归模板

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 在 mustache 模板中通过数组键选择项目?

javascript - 如何使用不同表中的列数据从其他表中获取数据?

node.js - 在 Nodejs 中导出的自定义模块中使用函数时出现问题

javascript - 如何在node/mean/express应用程序中拆分index.js文件?

javascript - React-Redux mapStateToProps 与传递父 Prop

javascript - 如何在express js中执行res.redirect时传递 header

javascript - 链式 Promise.all 与之前的 Promise.all 返回的数组

javascript - 从 $getJSON 加载下拉值