Node.js 回调函数

Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。


阻塞代码实例

创建一个文件 input.txt ,内容如下:

菜鸟教程官网地址:www.runoob.com

创建 main.js 文件, 代码如下:

var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());
console.log("程序执行结束!");

以上代码执行结果如下:

$ node main.js
菜鸟教程官网地址:www.runoob.com程序执行结束!

非阻塞代码实例

创建一个文件 input.txt ,内容如下:

菜鸟教程官网地址:www.runoob.com

创建 main.js 文件, 代码如下:

var fs = require("fs");fs.readFile('input.txt', function (err, data) {if (err) return console.error(err);console.log(data.toString());
});console.log("程序执行结束!");

以上代码执行结果如下:

$ node main.js
程序执行结束!
菜鸟教程官网地址:www.runoob.com

以上两个实例我们了解了阻塞与非阻塞调用的不同。第一个实例在文件读取完后才执行完程序。 第二个实例我们呢不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。

因此,阻塞按是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

一个fs.readFileSync的问题

var fs = require('fs'); fs.readFile('file.txt', 'utf-8', function(err, data) { if(err) { console.error(err); } else { console.log("readFile"); } }); console.log('end. of readFile'); var data2 = fs.readFileSync('file.txt', 'utf-8'); console.log("readFileSync"); console.log('end. of readFileSync')

结果:

$ node main.js
end. of readFile
readFileSync
end. of readFileSync
readFile

异步调用 执行完后方执行读取结果 若多个异步将按加载完成先后调用

复制地址:http://www.runoob.com/nodejs/nodejs-callback.html

转载于:https://www.cnblogs.com/yitongjiangshan/p/5581316.html

node.js 回调函数相关推荐

  1. [Node.js]回调函数

    简介 Node.Js异步编程的直接表现方式就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了.回调函数在完成任务后就会被调用,Node使用了大量的回调函数,node所有api都支持 ...

  2. 17.Node.js 回调函数--异步编程

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程 ...

  3. Node.js —— 回调函数callback

    一.什么是回调函数 1.回调函数是作为参数传递给另一个函数 2.回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码 3. 函数运行完成,再执 ...

  4. Node.js回调函数

  5. html js 回调函数,js中回调函数的学习笔记

    回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你" ...

  6. 【转】JS回调函数--简单易懂有实例

    JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...

  7. JS回调函数(callback)

    在使用Jquery的时候,用到Callback(),回调函数的概念.而且很多. 比如: $.ajax({url:"test.json",type: "GET", ...

  8. js回调函数的理解(轉)

    js回调函数(callback)理解Mark!讲之前说一句function say(){alert(,,,,,,,,)}var say=function (){alert(,,,,,,,)}var s ...

  9. Node.js 功能函数

    Node.js 功能函数Node.js 功能函数Node.js 功能函数Node.js 功能函数Node.js 功能函数Node.js 功能函数 最近在项目中经常用到的一些JavaScript fun ...

最新文章

  1. 2019全新学习路线图发布
  2. 功能自动化测试工具列表大全
  3. Jrebel最新激活破解方式
  4. JS面向对象,创建,继承
  5. 利用js实现popup弹窗
  6. 研究者展示黑客通过GPU绕过防毒软件查杀的方法
  7. 前端学习(2529):搭建中央管理
  8. 查询 oracle_ORACLE数据库查询语句
  9. SQLExecption:Operation not allowed after ResultSet closed解决办法
  10. 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路
  11. TensorFlow 实战(三)—— 实现常见公式
  12. 拓端tecdat|R语言隐马尔可夫模型HMM识别不断变化的市场条件
  13. vue-router 修改或添加新参数
  14. 单片机交通灯实训c语言编程,单片机交通灯程序(C语言).docx
  15. PowerPCB转Protel 99的详细教程
  16. linux startx 后返回命令行,输入命令: startx 反过来
  17. matlab里面sin函数是角度,matlab-如何用matlab编写sin函数要求定义一 – 手机爱问
  18. 郭天祥写的《我的大学》
  19. Tuscany SCA软件架构设计理念分析鉴赏 (一)
  20. Python【3】:格式化输出

热门文章

  1. linux 时间戳 c语言,C语言实现字符转unix时间戳
  2. python绘制正态分布函数_Python数据清洗(三):异常值识别与处理
  3. 微信中打开h5页面,直接关闭窗口js
  4. java 文件crc校验_Java 对文件进行 CRC32 校验
  5. python自动测试g_python自动化测试报告(excel篇)
  6. python plot函数label_python – Matplotlib Contour Clabel位置
  7. 通过url路径下载服务器文件
  8. 服务器系统分区 是啥,服务器系统盘分区
  9. 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
  10. java表格怎么添加按钮_1.6.2 在表格中添加按钮