人生与戏

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一:nodejs事件轮询机制  就是  函数的执行顺序

<script type="text/javascript">

        setImmediate(function(){
            console.log('setImmediate()');
        });
        setTimeout(function(){
            console.log('setTimeout()');
        },0);
        process.nextTick(function(){
            console.log('process.nextTick()');
        });

        /*
         process.nextTick()
         setTimeout()
         setImmediate()
        */
        /*
            nodejs的事件轮询机制:借助libuv库实现的
            概括事件轮询机制,分为6个阶段:
                1、timers 定时器阶段
                   计时和执行到点的定时器回调函数
                2、pending callbacks
                   某些系统操作(例如TCP错误类型) 的回调函数
                3、idle,prepare
                    准备工作
                4、poll轮询阶段(轮询队列) (顺序)
                    如果轮询队列不为空,依次同步取出轮询队列中第一个回调函数,直到轮询队列为空或达到系统最大的限制
                    如果轮询队列为空
                        如果之前设置过setImmediate函数
                            直接进入下一个check阶段
                        如果之前没有设置过setImmediate函数
                            在当前poll阶段等待
                                直到轮询队列添加回调函数,就去第一个情况执行
                                如果定时器到点了,也会去下一个阶段
                 5、check查阶段
                    执行setImmediate设置的回调函数
                 6、close callbacks 闭关阶段
                    执行close事件回调函数

         process.nextTick 能在任意阶段优先执行 
         */
</script>

 

posted on 2018-10-30 18:26  人生与戏  阅读(421)  评论(0编辑  收藏  举报