事件可能来自用户的点击或者数据变化,在Node中事件主要来自于网络请求,文件I/O,这些事件都会有对应的观察者,如文件观察者,网络观察者
这也是一个典型生产/消费模型,异步I/O ,网络请求提供事件生产,事件传递到各个观察者,观察者注册事件,事件循环负责取出事件然后执行事件
PS:以click为例,各个DOM观察者先注册事件,页面进程不停的监视页面,用户click页面生产事件,然后由容器中取出注册的click事件并执行,
一般的函数逻辑由我们控制:
var forEach = function (list, callback) {
for (var i = 0, len = list.length; i < len; i++) {
callback(list[i], i, list);
}
}
异步的情况下回调函数不由开发者控制了,每次js发起调用会产生一个过渡产品请求对象
fs.open = function (path, flags, mode, callback) {
bingding.open(pathModule._makeLong(path), stringToFlags(flags), mode, callback);
};
fs.open根据路径和参数打开一个文件,从而得到相关数据,内部调用了c++相关接口,过程中会产生一个中间对象,我们的所有状态会在其中……
PS:看了这么久,我感觉不太好
结语
以上就是关于nodejs中异步I/O的全部内容了,个人总结,如有遗漏或者错误,还请大家指出。









