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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS Express框架中处理404页面一个方式
May 28 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
用PHP读取RSS feed的代码
2008/08/01 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
精彩的大学生自我评价
2013/11/17 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
党员演讲稿
2014/09/04 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
文明家庭事迹材料
2014/12/20 职场文书
会议简讯范文
2015/07/20 职场文书
vue递归实现树形组件
2022/07/15 Vue.js