欢迎光临散文网 会员登陆 & 注册

nodejs事件轮询机制

2022-10-19 10:19 作者:对白浅浅  | 我要投稿


//nodejs时间轮询机制    此程序为JS文件,要在nodejs环境中运行


setTimeout(function(){

    console.log('setTimeout被执行')

},0)


setImmediate(function(){

    console.log("setImmediate被执行")

})


process.nextTick(function(){

    console.log("processs.nextTick被执行")

})


// 执行顺序为

// processs.nextTick被执行

// setTimeout被执行

// setImmediate被执行


// 底层实现   借助 libuv(一个C语言写的库)  libuv/src/unix/core.c中的uv_run


// 时间轮轮询机制分为6个阶段

// 1.timers 定时器阶段

//     计时和执行到点的定时器回调函数

// 2.pendding callbacks

//     某些系统操作(例如TCP错误类型)的回调

// 3.idle.prepare

//     准备工作

// 4.poll 轮询阶段

//     如果轮询队列不为空,依次同步取出轮询队列中的第一个回调函数执行,直到轮询队列为空或者达到系统最大的限制

//     如果轮询队列为空

//         如果之前设置过setImmediate函数

//             直接进入到下个check阶段

//         如果没有设置过setImmediate函数

//             在当前poll阶段等待

//                 直到轮询队列添加回调函数,就去第一个情况执行

//                 如果定时器到点了,也会去下个阶段

// 5.check 检查阶段

//     执行setImmediate设置的回调函数

// 6.close callbacks 关闭阶段

//     执行close事件回调函数


nodejs事件轮询机制的评论 (共 条)

分享到微博请遵守国家法律