1. nextTick 和 setTimeout 之间的关系
在vue的next-tick实现中使用了几种情况来延迟调用该函数,首先我们会判断我们的设备是否支持Promise对象,如果支持的话,会使用 Promise.then 来做延迟调用函数。如果设备不支持Promise对象,再判断是否支持 MutationObserver 对象,如果支持就使用MutationObserver来做延迟,如果不支持的话,我们会使用setImmediate,如果不支持setImmediate的话, 会使用setTimeout 来做延迟操作。
所以,setImmediate和setTimeout这两种宏任务可以看作是降级处理,一般情况都不会用到。
参考文章:参考文章