亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node.js中http.ServerResponse對象中的write方法為什么是同步的?

node.js中http.ServerResponse對象中的write方法為什么是同步的?

winner4265975 2017-05-28 16:05:03
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啊?是我想錯了么?
查看完整描述

1 回答

?
LLeo小浩

TA貢獻17條經驗 獲得超9個贊

感覺你可能理解錯了同步和異步的意思

res.write確實是按照代碼的執行順序來寫入數據的, 但這不是同步的意思, 具體的我們可以討論下

我一下子說不清楚


雖然node擅長處理io密集型應用, 但是訪問量大的導致機器性能不足時, 依舊會有延遲 ?這是正常的


查看完整回答
反對 回復 2017-06-12
  • 1 回答
  • 0 關注
  • 2337 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號