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的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 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
Smarty变量调节器失效的解决办法
2014/08/20 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
不同Jquery版本引发的问题解决
2013/10/14 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
python之Character string(实例讲解)
2017/09/25 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
后进生转化工作制度
2014/01/17 职场文书
迟到检讨书大全
2014/01/25 职场文书
开业庆典策划方案
2014/02/18 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
水毁工程实施方案
2014/04/01 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书