【NOTE】【深入浅出nodejs】异步 I/O(三)

Node的异步I/O

第一部分: 组装好请求对象、送入I/O线程池等待执行

第二部分:回调通知

观察者: 用于处理每个Tick过程中是否有事件需要处理。每个事件循环中有一个或多个观察者,判断事件是否需要处理的过程就是观察者询问是否有要处理的事件。

浏览器采用的观察者机制: 每个事件都对应的观察者,在Node中,事情主要来源于网络请求、文件I/O等,对应的事件也有对应的观察者。

JavaScript代码到系统内核之间的流程

var forEach = function (list, callback){
    for (var i = 0; i < list.length; i++){
        callback(list[i], i, list);
    }
}

对于Node中的异步I/O调用而言,回调函数并不由开发者来调用的。

在发出回调到回到函数被执行的过程中,主要是通过请求对象来完成整一个过程的。

例子:

fs.open()方法来作为例子

fs.open = funciton(path, falgs, mode, callback){
    //..
    binding.open(pathModule._makeLong(path)), 
                        stringToFlags(flags),
                        mode,
                        callback);
};

fs.open() 的作用是根据指定路径和参数去打开一个文件,从而得到一个文件描述符,这是后续所有I/O 操作的初始操作。由代码可以产出,JavaScript层面的代码通过调用C++核心模块进行下层的操作,如下图

 (写得不知道该怎么总结了,截图吧)

执行回调

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值