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中实现sleep功能实例
Mar 24 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
深入学习nodejs中的async模块的使用方法
Jul 12 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
May 15 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
可以支持多中格式的JS键盘
2007/05/02 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Scrapy框架使用的基本知识
2018/10/21 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python中eval与int的区别浅析
2019/08/11 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
英国大码女性时装零售商:Evans
2018/08/29 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
趣味运动会活动方案
2014/02/12 职场文书
项目合作意向书范本
2014/04/01 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
家属答谢词
2015/01/05 职场文书
python实现简单的井字棋
2021/05/26 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技