我没有用JavaScript太多的经验和我下面一个Node.js的书,它有下面的代码这个封闭是如何工作的?
function start(route, handle)
{
function onRequest(request, response)
{
var postdata='';
var pathname=url.parse(request.url).pathname;
request.setEncoding('utf8');
request.addListener("data", function(postDataChunkd)
{
postdata+=postDataChunkd;
});
console.log('Post data: ' + postdata);// <----------------------- HERE
request.addListener("end", function()
{
route(handle, pathname, response, postdata);
});
}
http.createServer(onRequest).listen(8124);
console.log('Server running on 8124');
}
exports.start=start;
代码工作正常不过的事情是,对我来说这似乎是一个位隐晦的变量postData被记录为addListener(“data”...和addListener(“end”)中的空字符串...
有人可以解释为什么postData变量记录为空,尽管成功请求?
Regards
丹
使用NodeJS时的一阶业务就是熟悉异步编程的概念。您正在为'data'事件添加一个侦听器,并且清楚地知道,当您的'console.log()'运行时事件还没有发生。 – 2014-10-09 17:13:05
...将日志*放置在事件处理程序中,您将获得有意义的结果。 – 2014-10-09 17:14:17
当然,我会更加关注异步方面。谢谢 – user3256539 2014-10-09 19:05:09