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使用jQuery选择器操作DOM
Feb 13 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 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安装为Apache DSO
2006/10/09 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
Vue props用法详解(小结)
2018/07/03 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
python执行get提交的方法
2015/04/29 Python
python3序列化与反序列化用法实例
2015/05/26 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
python 实现屏幕录制示例
2019/12/23 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
大学运动会通讯稿
2014/01/28 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
员工团队活动方案
2014/08/28 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis