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进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
nodejs基础知识
Feb 03 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
vue实现文件上传功能
2018/08/13 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
python与php实现分割文件代码
2017/03/06 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python 多线程串行和并行的实例
2019/02/22 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
电气自动化自荐信
2013/10/10 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
士力架广告词
2014/03/20 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers