nodejs异步编程基础之回调函数用法分析


Posted in NodeJs onDecember 26, 2018

本文实例讲述了nodejs异步编程基础之回调函数用法。分享给大家供大家参考,具体如下:

Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

阻塞代码实例

1、创建一个文件 input.txt ,内容如下:

i have a dream

2、创建 main.js 文件, 代码如下:

var fs = require("fs");
var data = fs.readFileSync('input.txt'); //注:同步版的 fs.readFile()
console.log(data.toString());
console.log("程序执行结束!");

以上代码执行结果如下:

nodejs异步编程基础之回调函数用法分析

非阻塞代码实例

1、创建一个文件 input.txt ,内容如下:

i have a dream

2、创建 main.js 文件, 代码如下:

var fs = require("fs");
fs.readFile('input.txt', function (err, data) { //注:异步版的 fs.readFile()
  if (err) return console.error(err);
  console.log(data.toString());
});
console.log("程序执行结束!");

以上代码执行结果如下:

nodejs异步编程基础之回调函数用法分析

总结:

以上两个实例我们了解了阻塞与非阻塞调用的不同。

第一个实例在文件读取完后才执行完程序。

第二个实例我们呢不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。

因此,阻塞按是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
Nodejs处理异常操作示例
Dec 25 #NodeJs
Nodejs模块的调用操作实例分析
Dec 25 #NodeJs
nodejs中方法和模块用法示例
Dec 24 #NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 #NodeJs
nodejs图片处理工具gm用法小结
Dec 12 #NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 #NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 #NodeJs
You might like
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
Python2与Python3的区别详解
2020/02/09 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
Java基础类库面试题
2013/09/04 面试题
财务助理岗位职责
2013/11/10 职场文书
仓管岗位职责范本
2014/02/08 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
网络编辑求职信
2014/04/30 职场文书
大学生求职信
2014/06/17 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
Win11快速关闭所有广告推荐
2022/04/19 数码科技