为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 2281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信