文档章节

setImmediate vs. nextTick的区别

何金池
 何金池
发布于 2015/09/04 15:11
字数 263
阅读 113
收藏 0

参考:http://stackoverflow.com/questions/15349733/setimmediate-vs-nexttick

setImmediate 在已在事件队列的I/O事件触发之后发生,process.nextTick在事件队列之前,并且在当前函数结束之后发生。

因此,如果你打算打断长运行、使用递归的cpu任务,你可以使用setImmediate 而非process.nextTick来插入下一个迭代,否则任何I/O事件回调没有任何机会在迭代过程中被调用。

另外:


传递到process.nextTick的回调函数通常在执行事件流的最后被调用,因此最适合用于尽可能快的同步操作。如果未做检查,这将会消耗掉event loop,阻止I/O发生。setImmediates则按创建顺序插入队列,并且在每一次迭代过程中弹出。这与process.nextTick有很大不同,process.nextTick会在每一次迭代的时候执行process.maxTickDepth队列回调函数。setImmediate在触发队列回调函数之后会让步于event loop,以确保I/O不会被消耗掉。

© 著作权归作者所有

上一篇: JS垃圾回收
下一篇: DOM事件流
何金池
粉丝 13
博文 39
码字总数 7103
作品 0
深圳
前端工程师
私信 提问
node中的Event Loop

关于事件这一块在《深入浅出的nodejs》中很少讲到,书里面只是在第三章提及了4个API方法,比如两个定时器(setTimeout和setInterval),process.nextTick()和setImmediate。 浏览器中的event...

laihuamin
2018/09/12
0
0
我已经迷失在事件环(event-loop)中了【Nodejs篇】

我第一次看到他事件环(event-loop)的时候,我是一脸懵,这是什么鬼,是什么循环吗,为什么event还要loop,不是都是一次性的吗? 浏览器中和nodejs环境中的事件环是有一些区别的,这里我只研...

cherryvenus
2018/08/14
0
0
浅析 Vue 2.6 中的 nextTick 方法

浅析 Vue 2.6 中的 nextTick 方法。 事件循环 JS 的 事件循环 和 任务队列 其实是理解 nextTick 概念的关键。 这个网上其实有很多优质的文章做了详细介绍,我就简单过过了。 以下内容适用于浏...

joy_yu
02/27
0
0
Vue番外篇 -- vue.nextTick()浅析

当我们在vue的beforeCreate和created生命周期发送ajax到后台,数据返回的时候发现DOM节点还未生成无法操作节点,那要怎么办呢? 这时,我们就会用到一个方法是this.$nextTick(相信你也用过)...

DIVI
2018/10/22
0
0
JavaScript 运行机制详解:再谈Event Loop

一年前,我写了一篇《什么是 Event Loop?》,谈了我对Event Loop的理解。 上个月,我偶然看到了Philip Roberts的演讲《Help, I'm stuck in an event-loop》。这才尴尬地发现,自己的理解是错...

阮一峰
2014/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (19. 数据库)

19.1.1. 存储引擎 19.1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、 更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧...

Shingfi
9分钟前
1
0
三分钟手操自己的yum源

本文章原创首发公众号:编程三分钟 上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。 什么情况下我们需要搭建一个仓库呢? 记...

编程三分钟
13分钟前
3
0
一起来学Java8(二)——Lambda表达式

Lambda简介 什么是Lambda表达式,简单的说是一种匿名函数表达方式。因此Lambda表达式本质是个函数,只不过没有函数名称。 Lambda表达式具有以下特点: 匿名,它没有函数名称 本质是个函数,除...

猿敲月下码
15分钟前
3
0
排序算法之希尔排序

1、介绍。 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D...

daxiongdi
23分钟前
3
0
log4j2入门hello world

1.什么是log4j2 (1)log4j log4j是apache的一个开源项目,表示log for java.是一个日志工具,可以将日志信息输出到文件,控制台等其他地方 ,还可以定义日志的输出格式,另外还有日志级别的区分,可...

Blueeeeeee
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部