我只是在使用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中实现这样的功能?