javascript范围:如何从传递到另一个函数的函数中获取信息?

时间:2017-01-24 22:22:18

标签: javascript node.js

我是javascript和node.js的新手,我一直在努力解决这个范围问题。下面的代码生成一个简单的get请求,并将该网页的主体显示到控制台 - 没有问题。

function makeGETRequest(host, path, headers) {
    var options = {
        hostname: host,
        port: 8000,
        path: path,
        method: 'GET',
        headers: headers
    };

    var request = http.request(options, function(response) {
        response.on('data', function(body) {
            console.log('Body: ' + body);
        });
    });

    request.end();
 }

我似乎无法从http.request中声明的函数中获取任何信息。如果我想将body保存到我在makeGETRequest()中声明的变量然后返回它,那么它将是未定义的,因为它超出了范围。创建一个全局变量并使用它而不能解决问题。

离。

function makeGETRequest(host, path, headers) {
        var siteBody;
        var options = {
        hostname: host,
        port: 8000,
        path: path,
        method: 'GET',
        headers: headers
    };

    var request = http.request(options, function(response) {
        response.on('data', function(body) {
            console.log('Body: ' + body);
            siteBody = body; //works as long as I don't exit the scope of the function
        });
    });

    request.end();
    return body; //returns undefined
 }

如何获取信息正文或其他函数,以便我可以使用makeGETrequest()中的信息然后将其返回?

1 个答案:

答案 0 :(得分:0)

您需要详细了解asynchronous Javascript函数以及如何解决它们。

在异步函数中,您无法将response分配给变量并获取它。

相反,您需要使用promise