解读 JavaScript 异步函数

453 查看

Chapter 1:Node.js环境下的异步函数

Timer

Node对两个Timer的超时时间做了个小trick, 任何大于TIMEOUT_MAX小于1ms的超时都被视为1ms.

setTimeout 和 setInterval 在Node下的封装基本上一样, 这里单拿前者举例.

setImmediate

官方文档对 setImmediate 并不准确, 基本上让所有没读过源码(包括读得不仔细)的人对其产生极大误解.

主要来自 setImmediate 和 setTimeout(0) 谁先谁后的问题,

process.nextTick

这个在异步函数里优先级最高大家都知道, 属于idle观察者也清. 代码在 src/node.js 里实现.

代码很长, 不多说, 所有 process.nextTick 堆积的任务都会在事件循环的 next tick (后面讲)里一口气执行.

这里还有一个重点:  _tickCallback 函数是idle观察者在 next tick 里的主回调函数: