[node.js]异步处理

异步处理
为什么需要异步处理?
当函数需要完成耗时的操作时(比如读取文件),需要等完成这个操作后才能往下进行,比如用户请求服务器,服务器读取文件时,就会造成 阻塞。所以需要异步处理函数。而对于像休眠这样不是异步处理的函数,就需要找到一个能代替休眠这个功能的异步处理函数。

node.js的异步处理
node.js支持异步处理,有特定的异步处理函数,当程序进行到这些函数时,因为耗费时间,node.js会先自动返回,接着处理下面的程序,而不管函数是否处理完,同时给函数一个回调函数参数,当函数处理完后将自动调用回调函数,通过回调函数返回需要的东西。(异步处理函数的参数都是定义好的,如读取文件函数:

fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});

其中他的第二个规定参数就是个回调函数,而他返回给回调函数的就是‘data’即文件内容(自动把文件内容传给data);

想要通过return来返回需要的东西是不行的,因为异步处理还没处理完函数就返回了,得不到想要的东西。所以对于异步处理函数(不包括普通函数,普通函数不需要异步处理,因为不耗费时间,所以node中有特定的异步函数),必须要有回调函数才能得到想返回的东西。

node是单进程,所以用户在node下请求服务器,每次请求都需要等上次处理完,所以需要异步处理。

 function onRequest(request, response) 
 {     
 	var pathname = url.parse(request.url).pathname;     
 	console.log("Request for " + pathname + " received.");  
 	route(handle, pathname, response);   
 }  
 http.createServer(onRequest).listen(8888);

这也是个异步处理函数,监听8888端口,每当用户请求时,把回调函数做为参数传给createServer函数,函数处理完通过onRequest回调函数返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值