0
我已经编写了一个node.js服务器,该服务器创建一个服务器并在完成异步功能时打印输出。虽然我能够在console.log中始终获得正确的输出。这同样没有反映在我的回应中。这里是我的代码片段: -节点js在第二个或第三个调用上工作
var request = require('request');
var http = require('http');
var cheerio = require('cheerio');
var url = require('url');
var Curl = require('node-libcurl').Curl;
var sleep = require('sleep');
isDone = 0;
globalImage = "";
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
var main_url = query["link"];
if (req.url != '/favicon.ico') {
res.writeHead(200);
if(main_url != undefined){
var position = parseInt(query["position"]);
// web_scrap()
web_scrap(main_url,position, function(image) {
console.log("Console log : " + image);
globalImage = image;
});
res.write(globalImage);
res.end("HEY");
}
}
else {//For favicon and other requests just write 404s
res.writeHead(404);
res.write('This URL does nothing interesting');
res.end();
}
}).listen(3000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:3000/');
function web_scrap(url, position, callback){
// do something
callback(JSON.stringify(product));
}
现在就启动服务器,并与参数的链接和位置访问它在浏览器得到的,我在第二次或第三次刷新获得输出。尽管我在console.log中获得了完美的输出结果!
任何人都可以在这方面帮助或指导我吗?
谢谢!
你尝试添加一个'res.writeHead(200,{'Connection':'Keep-Alive'});'? –
我现在试过了。仍然没有工作:( –
哼,我想这是由'web_scrap'中的一个异步调用引起的,它使得你的res.end函数在调用之前,尝试移动'res.write(globalImage); res.end(“HEY” );'在你的回调函数中。 –