req.write之后会再次自动提交请求?
var req=http.request(options,function(res){ //拿到返回值 res.on('end',function(){ console.log('finish') }) res.on('data',function(chunk){ console.log(Buffer.isBuffer(chunk)) console.log(typeof chunk) }) console.log('status'+res.statusCode) console.log('headers'+JSON.stringify(res.headers)) //打印headers res.on('error',function(e){ console.log('error:'+e.message) }) }) req.write(postData) //将数据写入请求体 req.end()
我交换了下request返回函数里的代码,发现状态码和header总是先被打印出来,这合乎情理,毕竟data和end事件并未发生。但是,req.write()是写在其后的,那么请求执行顺序究竟是怎样的?我的理解是:
这是post方法自带的策略,即(老师也说过类似的话)存在某个判断,比如headers里的'Content-Length',如果与真实写入的postdata不相符,就不发送请求。
事实上将req.write(postData) 这句话删掉,你将看不到任何输出及终止,类似一直在等待请求发出一样。
那么究竟是不是这样呢?求大神回答!