在node中许多的模块都是异步执行的。
一个异步的I/O调用如下:
(1)发起I/O调用
1.用户引进模块,并向其中传入参数与回调函数
2.node模块将传入的参数与回调函数封装成为一个请求对象
3.将封装好的对象推入I/O线程池中等待执行
(2)执行回调
1.I/O每次的操作完成后,都会将结果存储到请求对象的result属性上,并发出操作完成的通知
2.每次事件循环都会检查是否有未完成的I/o操作,如果有就将请求对象加入I/o观测者队列中,之后当做事件处理
3.处理I/O观测者事件时会取出之前封装在请求对象中的回调函数,执行这个回调函数,并且将result当做参数,完成回调。