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
NodeJS远程代码执行
Aug 28 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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&mysql(二)
2006/10/09 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
JS设计模式之责任链模式实例详解
2018/02/03 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python判断有效的数独算法示例
2019/02/23 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
求职推荐信
2013/10/28 职场文书
土建工程师岗位职责
2014/06/10 职场文书
大学生个人求职信例文
2014/07/07 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS