节点http.request():与var ClientRequest和callbackFn的关系

Node http.request () : the relationship with var ClientRequest and callbackFn

本文关键字:ClientRequest callbackFn 关系 var request http 节点      更新时间:2023-09-26

我是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 'write'注释和

取它'end',然后触发callbackFn function(res)

请分享你的意见,并告诉我更多关于这个API。

谢谢,最好的方面。

这似乎是http的异步性质。请求可能引起您的困惑。

基本上,请求调用将被发出——这需要一些时间。与此同时,JS将继续执行request .write()等。

你应该看看eventemitter,你已经在请求回调中使用它们了。res.on("data",function(chunk))。

也许更好的做法是将请求外部的调用放到另一个回调函数中,然后在请求内部调用。这将导致它在请求结束时被调用——由"end"发射器发出信号:
res.on("end",function(){
    console.log("comment success!");
    requestWrite();
});
function requestWrite(){
    req.write(postData);
    req.end();
}