Node.js 回调函数

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

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

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

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

回调函数一般作为函数的最后一个参数出现:

function foo1(name, age, callback) { } function foo2(value, callback1, callback2) { }

阻塞代码实例

创建一个文件 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程序执行结束!

非阻塞代码实例

创建 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

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

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

转载于:https://www.cnblogs.com/xiaohuizhenyoucai/p/11021306.html

Node基础: 回调函数 2相关推荐

  1. node.js 回调函数

    Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数, ...

  2. [Node.js]回调函数

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

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

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

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

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

  5. Java基础:回调函数

    因为在看Android代码的时候发现了许多关于回调函数的知识, 所以去了解了一下. 对于我来说不太好懂, 因为我觉得看的那些博文的讲法对我来说很绕, 所以我在理解了之后想写一篇关于回调函数的博文来给和 ...

  6. JS基础--回调函数

    文章目录 一.回调函数是什么? 二.实现回调函数的方法? 1.使用命名函数作为回调: 2.使用匿名函数作为回调: 三.回调函数中this是谁? 一.回调函数是什么? 是一个被作为参数传递给另一个函数的 ...

  7. Node.js回调函数

  8. cocos2dx[3.2](11)——新回调函数std::bind

    [唠叨] 自从3.0引用了C++11标准后,回调函数采用的新的函数适配器:std::function.std::bind. 而曾经的回调函数menu_selector.callfunc_selecto ...

  9. 回调函数 相当于线程_阿里面试题:请简述下 Node 的线程模型

    前言 如果你有一定的前端基础,比如 HTML.CSS.JavaScript.jQuery:那么,Node.js 能让你以最低的成本快速过渡成为一个全栈工程师(我称这个全栈为伪全栈,我认为的全栈也要精通 ...

最新文章

  1. jbpm4 org.hibernate.exception.ConstraintViolationException
  2. python 魔法参数*argv 和 **kw
  3. MyEclipse:Available memory is low解决办法
  4. Electron-builder打包安装程序遇到的问题解决方案
  5. Sequence 带来的更多乐趣
  6. 【DP】错排问题(ybtoj DP-1-1)
  7. php朋友圈上传多个图片不显示不出来,求教!文章分享到微信朋友圈,链接的缩略图不显示怎么解决?...
  8. L3-022 地铁一日游 (30 分)-PAT 团体程序设计天梯赛 GPLT
  9. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_5 Mybatis的CRUD-查询返回一行一列和占位符分析...
  10. iphone计算机快捷键,苹果电脑ps快捷键大全
  11. CPA七--应交增值税(转载)
  12. 企业微信-付款到员工零钱
  13. 戴戒指的含义(以后要结婚的必看)
  14. VINS-MONO概述
  15. 一群不想鸡娃的直男程序员,决定对一支笔下手了
  16. access两位小数不进位_文章列表-火龙的博客 - PHP,GO,MySQL知识分享问题记录博客...
  17. java源码系列:HashMap底层存储原理详解——5、技术本质-原理过程-算法-取模会带来一个什么问题?什么是哈希冲突?为什么要用链表?
  18. 文件被占用删除不了?快来我给你一招解决!
  19. 计算机硬盘格式化了如何恢复出厂设置,电脑恢复出厂设置和格式化有什么区别...
  20. 支付宝企业账户单笔支付到个人账户

热门文章

  1. 15.selenium_case01
  2. 为什么人们爱听有声书?
  3. 1864: [Zjoi2006]三色二叉树
  4. 让你分分钟学会Javascript中的闭包
  5. 关于IIS和Serv-U在同一台服务器中端口冲突问题
  6. linux下mq的mc.sh在哪?,RocketMQ的安装与使用
  7. DPDK 报文收发流程(二十五)
  8. linux i3wm性能,Core i3-530集成显卡Linux性能考察
  9. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求
  10. html每个段落空前空两格,科普:为什么段落开始要空两格(两个汉字)?