回调函数同步执行

function asyncFake(data, callback) {if(data === 'foo') {callback(true);}else{callback(false);}}asyncFake('bar', function(result) {// this callback is actually called synchronously!
    console.log(result);
})
console.log("#############");/*
运行结果:
false
#############*/

回调函数异步执行

process.nextTick()可以确保asyncReal的回调总是在其他同步代码(console.log("#############"))运行完成后,event loop开始前调用的

function asyncReal(data, callback) {process.nextTick(function() {callback(data === 'foo');});
}asyncReal('bar', function(result) {console.log(result);
})console.log("#############");/*
运行结果:
#############
false*/

const EventEmitter = require('events');
const util = require('util');function MyEmitter() {EventEmitter.call(this);// 使用nextTick,可以等待下面的同步代码,myEmitter.on('event',。。),执行完后,再触发event事件//如果不使用nextTick,直接触发event事件,myEmitter.on('event',。。)可能都没有执行,就不会对event事件处理
    process.nextTick(function() {this.emit('event');}.bind(this));
}
util.inherits(MyEmitter, EventEmitter);const myEmitter = new MyEmitter();
//对event事件的处理方法
myEmitter.on('event', function() {console.log('an event occurred!');
});

转载于:https://www.cnblogs.com/moris5013/p/10774937.html

process.nextTick相关推荐

  1. Linux事件循环阻塞,深入浅析Node.js 事件循环、定时器和process.nextTick()

    什么是事件循环 尽管JavaScript是单线程的,但通过尽可能将操作放到系统内核执行,事件循环允许Node.js执行非阻塞I/O操作. 由于现代大多数内核都是多线程的,因此它们可以处理在后台执行的多 ...

  2. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

  3. node中定时器, process.nextTick(), setImediate()的区别与联系

    1.定时器 setTimeout()和setInterval()与浏览器中的API是一致的,定时器的问题在于,他并非精确的(在容忍范围内).尽管事件循环十分快,但是如果某一次循环占用的时间较多,那么下 ...

  4. 【nodejs原理源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick

    [摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/d ...

  5. 6.process.nextTick()

    process.nextTick(() => console.log(1)); Promise.resolve().then(() => console.log(2)); process. ...

  6. 细说setTimeout/setImmediate/process.nextTick的区别

    node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相 ...

  7. setTimeout和setImmediate以及process.nextTick的区别

    <第二届阿里巴巴前端练习生计划线上笔试>考试 setTimeout和setImmediate以及process.nextTick的区别 SetTimeOut setTimeout和setI ...

  8. 嵌套的process.nextTick问题

    ​假设我们有以下代码 function main() {process.nextTick(() => {main();}) } main(); setTimeout(() => {cons ...

  9. 前端碎碎念 之 nextTick, setTimeout 以及 setImmediate 三者的执行顺序

    『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到. 我会查阅一些资料并可能加上自己的理解,来记录这些问题.更多文章请前往我的个人博客 ...

  10. node.js入门 - 12.api:进程(process)

    虽然node对操作系统做了很多抽象的工作,但是你还是可以直接和他交互,比如和系统中已经存在的进程进行交互,创建工作子进程.node是一个用于事件循环的线程,但是你可以在这个事件循环之外创建其他的进程( ...

最新文章

  1. 洛谷 题解 CF910C 【Minimum Sum】
  2. emwin之基于某个事件或标志创建某个界面的一种方法
  3. 贴一段数组动态扩容的代码
  4. java 对字符串中的数值排序
  5. iphone照片删掉又出现_iPhone手机相册无法加锁应该怎么办?
  6. Install VMware tools 解决(物理主机WIN7X64和VM下的REHAT LINUX AS4共享文件)
  7. java线程并发blockingqueue类使用示例
  8. 九毛九集团java_JAVA数组课后作业
  9. json session cookie介绍和使用
  10. text-align 属性,输入框数字向右靠
  11. RTI_DDS自定义插件开发 8 信息
  12. 大业达公司裁员风云2
  13. 计算机学院毕业礼物,史上最全毕业礼物攻略,绝对不能错过!
  14. 魔方(7)五魔方、二阶五魔方
  15. 《数据可视化技术》 太平洋汽车销售分析
  16. Macaca 使用实践——阿里开源自动化解决方案
  17. 红旗linux和其他版本区别,Ubuntu Linux与红旗Linux系列的差别
  18. 前美团COO干嘉伟:好的管理,打得、骂得,又哄得
  19. vue 添加滚动条 横向 竖向
  20. 【转】校招优秀简历和普通简历的区别

热门文章

  1. 外企的溃败:Oracle中国研发中心裁员,1600人,补偿为N+6
  2. 高性能负载均衡是如何架构的?
  3. 天天都在用的 Nginx,可你知道如何用一个反向代理实现多个不同类型的后端网站访问吗?...
  4. 小心那些年末还在努力的狠人!
  5. 推荐一些学习方面的公众号
  6. 看小龙哥演讲之感悟!
  7. 你的工资基础决定你的前途
  8. 无论如何,你该在大城市再坚持下
  9. windows7蓝牙怎么打开_PC版微信v2.7.0曝光:支持电脑上打开小程序
  10. 【题解】 bzoj4004: [JLOI2015]装备购买 (线性基)