var?http?=?require('http');
http.createServer(function(req,res){
????res.writeHeader(200,?{'Content-Type'?:?'text/html?;?charset=utf-8'})
????if(req.url?!==?'/favicon.ico'){
????????console.time('test');
????????var?c=1,a=2,b=3;????????
????????res.write(show()+''+c);
????????c=a+b;
????????res.write('<br?/>')
????????res.write(c+'<br?/>');
????????console.timeEnd('test');
????????res.end()????????
????}
}).listen(8000)
function?show(){
????var?str='';
????for(var?i=0;i<10000;i++){
????????str+=i*i*i*i+'<br?/>';
????}
????return?str
}
console.log('server?is?running?at?http://127.0.0.1:8000')最后兩行是1和5!書上寫http.ServerResponse對象實現了一個 stream.Writable(可寫流)。但是可寫流一般是異步的(如fs寫入流,zlib流,子進程的stdin)啊,這樣對事件驅動的服務模型正好。現在我測試出的是res.write同步也就就是說要執行完這個回掉才能執行事件隊列里的下一個回掉?function(req,res)是ruquest事件的回掉,也就是說如果應對好幾萬個并發請求就要執行幾萬個function(req,res),哪怕function(req,res)里沒有cpu密集應用積少成多這不是用戶訪問就會有延遲?但是node非常擅長處理密集io啊?是我想錯了么?
node.js中http.ServerResponse對象中的write方法為什么是同步的?
winner4265975
2017-05-28 16:05:03