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实现获取某宝商品分类
May 28 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodeJS微信分享
Dec 20 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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中,文件上传
2006/12/06 PHP
php 数组的一个悲剧?
2011/05/11 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python多线程并发实例及其优化
2019/06/27 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
经典演讲稿范文
2013/12/30 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
六查六看自查材料
2014/02/17 职场文书
人事科岗位职责范本
2014/03/02 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
会计学专业自荐信
2014/06/25 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL