我是Node.js的新手。
我正在尝试进一步探索Node.js API。
我提到并编写了一个爬虫,代码可以运行。
我已成功将评论发布到网站上。
但我对返回类的执行顺序感到困惑 - clientRequest和
callbackFn。
var req = http.request(urlRequest,function(res){
console.log("Status: "+res.statusCode);
console.log("headers: "+JSON.stringify(res.headers));
res.on("data",function(chunk){
console.log(Buffer.isBuffer(chunk));
console.log(typeof chunk);
});
res.on("end",function(){
console.log("comment success!");
});
});
req.on('error',function(e) {
console.log("Error :"+e.message);
});
req.write(postData);
req.end();
我对这些步骤的原始理解如下:
1)http.request(urlRequest
2)function(res)
3)最后返回clientRequest-class var req
但从代码来看,似乎我的理解是错误的。
应该是clientRequest-class-object var req
'写'评论和
把它结束'然后触发callbackFn function(res)
。
请分享您的意见并告诉我有关此API的更多信息。
谢谢&最好的。
答案 0 :(得分:0)
似乎http.request的异步性质可能会引起您的困惑。
基本上,将进行请求调用 - 这需要一些时间。与此同时,JS将转移到req.write()等。
您应该查看EventEmitters,您已经在请求回调中使用它们(例如。res.on("data",function(chunk)
)。
或许更好的举措是将请求之外的调用放入另一个回调函数中,然后在请求中调用该函数。这将导致在请求结束时调用它 - 如" end"发射器:
res.on("end",function(){
console.log("comment success!");
requestWrite();
});
function requestWrite(){
req.write(postData);
req.end();
}