12.nodejs事件轮询机制
一: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>
12.nodejs事件轮询机制的更多相关文章
- 面试题: nodejs 的事件轮询机制
setTimeout(function(){ console.log('setTimeout()执行了') },0) setImmediate(function(){ console.log('set ...
- nodejs事件轮询详述
目录 概述 nodejs特点 事件轮询 关于异步方法 概述 关于nodejs的介绍网上资料非常多,最近由于在整理一些函数式编程的资料时,多次遇到nodejs有关的内容.所以就打算专门写一篇文章总结一下 ...
- JS中的异步以及事件轮询机制
一.JS为何是单线程的? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊.(在JAVA和c#中的异步 ...
- nodejs的事件轮询机制
1.timers定时器阶段 执行定时器到点的回调函数(所有定时器setTimeout / setInterval的回调函数都在这个阶段执行) 2.idle prepare 准备阶段 TCP错误回调 3 ...
- 理解Nodejs中的事件轮询机制
我在看<了不起的Nodejs>一书,阻塞与非阻塞IO那一章我来回看了N遍,然后...还是没太看懂..于是我找到了这篇日志,写的是真的有点好啊..潸然泪下.. 原文:http://www.r ...
- nodejs,事件轮询总结
宏任务 script,setTimeoout,setInterval,setlmmediate(node 独有),I/o,render渲染 微任务 process.nextTick(),promise ...
- js事件轮询机制
console.log(1) setTimeout(function(){ console.log(2) },0); console.log(3) 毫无疑问:运行结果是1 3 2 也就是说:setTi ...
- 理解Node.js的事件轮询
前言 总括 : 原文地址:理解Node.js的事件轮询 Node小应用:Node-sample 智者阅读群书,亦阅历人生 正文 Node.js的两个基本概念 Node.js的第一个基本概念就是I/O操 ...
- Node.js的事件轮询Event Loop原理
Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...
随机推荐
- 简单介绍Spring的ContextLoaderListener
在开发Spring的Web项目中,通常我们都会在web.xml中配置一个Spring的核心监听器,就是把Spring的IOC容器纳入Servlet容器中,配置如下: <listener> ...
- Codeforces Round #224 (Div. 2) A. Ksenia and Pan Scales
A. Ksenia and Pan Scales time limit per test 1 second memory limit per test 256 megabytes input stan ...
- C# 处理DateTime算法,取某月第1天及最后一天
代码如下所示: /// <summary> /// 取得某月的第一天 /// </summary> /// <param name="datetime" ...
- synchronized (lock) 买票demo 线程安全
加锁防止多个线程执行同一段代码! /** http://blog.51cto.com/wyait/1916898 * @author * @since 11/10/2018 * 某电影院目前正在上映贺 ...
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
版权声明:本文为博主原创文章,转载请注明CSDN博客源地址! 共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/26404733 ...
- sdut2408 pick apples (贪心+背包)山东省第三届ACM省赛
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/svitter/article/details/24642587 本文出自:http://blog.c ...
- xml时间配置
这些星号由左到右按顺序代表 : * * * * * * * 秒 分 时 日 月 周 年 序号 说明 是否必填 允许填写的值 允许的通配符 秒 是 0-59 , - * / 分 是 0-59 , - * ...
- selenium常用获取元素点
//通过id WebElement element = driver.findElement(By.id("coolestWidgetEvah")); //通过className ...
- JZ2440 裸机驱动 第13章 LCD控制器(1)
本章目标 了解LCD显示器的接口及时序: 掌握S3C2410/S3C2440 LCD控制器的使用方法: 了解帧缓冲区的概念,掌握如何设置帧缓冲区来显示图像: 13.1 LCD和LCD控制器 13.1 ...
- CentOS6.5 搭建在线yum源
CentOS6.5 搭建在线yum源 发布时间: 2017-04-21 浏览次数: 611 下载次数: 1 问题描述 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器 ...