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、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php array_merge下进行数组合并的代码
2008/07/22 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
django 环境变量配置过程详解
2019/08/06 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python定义类的简单用法
2020/07/24 Python
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
中职应届生会计求职信
2013/10/23 职场文书
优秀班组长事迹
2014/05/31 职场文书
社区两委对照检查材料
2014/08/23 职场文书
小学科学教学计划
2015/01/21 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
现实表现证明材料
2015/06/19 职场文书
天气温馨提示语
2015/07/14 职场文书
校园之声广播稿
2015/08/18 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
导游词之太湖
2019/10/08 职场文书
python 逐步回归算法
2021/04/06 Python
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
HttpClient实现文件上传功能
2022/08/14 Java/Android