nodejs中,http包问题。

cqh963852 2017-01-25 05:01:16

var http = require("http");
http.createServer(function (req,res) {
res.writeHead(200,{
'Content-Type':'text/html charset = utf-8'
})

res.write("Title1");
if(res.url !== "/favicon.ico"){

function endServer(){
res.write("服务结束");
res.end("");
}

res.write("Title2");
sleep(1000,endServer);
}
}).listen(8000,"127.0.0.1");
console.log("Server running at http://127.0.0.1:8000");

function sleep(sleepTime,callBack){
setTimeout(function(){
//假设这是一个费时操作。
// for(var start = +new Date;+new Date-start<=sleepTime;){}
callBack();
},0)
}


如上代码运行以后,发现访问 http://127.0.0.1:8000这个页面,总是需要等待,感觉主线程被阻塞了。
是不是在res.end()被调用之前,这段代码,都不会再接受下一个请求呢?


总有一些操作,很少(或几乎不)占用cpu时间,但是得等待硬盘/数据库去搜索资料。这时候,我们用回调来实现异步编程,让一个句柄去做数据io,然后node就开始服务下一个人了。
引用别人的一句话,道理懂是懂,但是,怎么用代码实现,上一个请求还在异步操作,还能服务下一个请求呢?
...全文
177 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqh963852 2017-01-25
  • 打赏
  • 举报
回复
@娃都会打酱油了 前辈指点下。不结束一个请求的话,怎么响应下一个请求呢。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧