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中操作mysql数据库示例
Dec 20 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs实现UDP组播示例方法
Nov 04 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 serialize()与unserialize()的用法
2013/06/05 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
python实现端口转发器的方法
2015/03/13 Python
Python注释详解
2016/06/01 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
通过python检测字符串的字母
2020/02/18 Python
python如何停止递归
2020/09/09 Python
HTML5标签大全
2016/11/23 HTML / CSS
Hotels.com中国区:好订网
2016/08/18 全球购物
实习生自我鉴定范文
2013/12/05 职场文书
中文专业求职信
2014/06/20 职场文书
授权委托书样本
2014/09/25 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
尝试使用Python爬取城市租房信息
2022/04/12 Python