1.发起 I/O 调用

1.用户通过 Javascript 代码调用 Node 核心模块,将参数和回调函数传入核心模块;
2.Node 核心模块会将传入的参数和回调函数封装成一个请求对象;
3.将这个请求对象推入 I/O 线程池等待执行;
4.Javascript 发起的异步调用结束,Javascript 线程继续执行后续操作;

2.执行回调

1.I/O 操作完成后会将结果存储到请求对象的 result 属性上,并发出操作完成后的通知;
2.每次事件循环时会检查是否有完成的 I/O 操作,如果有就将请求对象加入 I/O 观察者队列中,之后当做事件处理;
3.处理 I/O 观察者事件会取出之前封装在请求对象中的回调函数,执行这个回调函数,并将 result 当作参数,以完成 Javascript 回调目的。