[异步事件实现原理](http://luoxia.me/code/2016/08/16/%E5%BC%82%E6%AD%A5%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/) >[info] 提取关键词: 1. 异步与同步 2. 阻塞/非阻塞IO与异步IO 3. 事件驱动(事件循环,请求对象,执行回调) 4. 基于事件驱动的非I/O异步API >[info] 事件驱动的异步实现方式实现方式 1. 事件循环 >[info]>[info]事件循环机制是Node自身的执行模型,浏览器采用了类似的机制来实现异步。 事件循环机制中的每一次循环为Tick,首先程序创建主循环,然后每次Tick就会判断是否有事件等待处理,如果有,就取出事件及其回调函数,并执行回调函数。 这里的事件由哪些产生方式呢?比如有文件读取,ajax,某个dom元素被点击等都会产生事件。 2. 观察者 >[danger]>[danger]程序的某些操作会不断产生事件,而事件循环过程中需要用于判断是否有事件需要处理的观察者,比如有文件I/O观察者,网络I/O观察者等,对于非I/O操作,对于setTime和setInterval有定时器观察者,process.nextTick()有idle观察者,setImmediate有check观察者等等。