从Node JS GET请求访问数据而无需链接回调函数

时间:2018-08-25 23:13:18

标签: javascript node.js get

我只是在使用node.js,所以我可以运行计划的任务并使用GET请求。我将粘贴一些代码以显示我想做的事情,尽管由于明显的原因而无法正常工作:

const http = require("http");
const request = require("request");

http.createServer(function (req, res) {
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write("Hello, World!");
    let a = getRequest();
    console.log(a);
    res.end();
}).listen(8080);

function getRequest() {
    let b;
    request("http://www.google.com", function(err, res, body) {
        b = body;
    })
    return b;
}

因此,由于请求是异步的,因此正文中的b无效,并且最终打印b时,b仍未定义。我知道应该使用这些回调函数的方式是保持回调函数的链接,因为那是唯一可以访问body内容的地方。但是,我不想一直束缚功能,因为它会完全破坏程序的结构。我想将所有节点服务器命令保留在http.createServer块中。我不想将它们放在从回调函数内部调用的函数中。在这个例子中,异步处理并没有什么意义,因为无论如何只有1个get请求,并且直到收到该请求之前,它都不会显示在console.log中。

我只需要一种简单的方法即可通过get请求抓取数据。完美的是,如果我有一些函数,我可以给出一些链接,它从它们那里获取原始html,然后等待它们全部完成,以便我可以处理所有数据一次。

如何在Node.js中实现这样的功能?

1 个答案:

答案 0 :(得分:2)

您可以使用以下模块进行此操作:sync-request。 使用此模块,您将能够从NodeJS代码发出同步Web请求。