Node基础: 回调函数 2
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相关推荐
- node.js 回调函数
Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数, ...
- [Node.js]回调函数
简介 Node.Js异步编程的直接表现方式就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了.回调函数在完成任务后就会被调用,Node使用了大量的回调函数,node所有api都支持 ...
- 17.Node.js 回调函数--异步编程
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程 ...
- Node.js —— 回调函数callback
一.什么是回调函数 1.回调函数是作为参数传递给另一个函数 2.回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码 3. 函数运行完成,再执 ...
- Java基础:回调函数
因为在看Android代码的时候发现了许多关于回调函数的知识, 所以去了解了一下. 对于我来说不太好懂, 因为我觉得看的那些博文的讲法对我来说很绕, 所以我在理解了之后想写一篇关于回调函数的博文来给和 ...
- JS基础--回调函数
文章目录 一.回调函数是什么? 二.实现回调函数的方法? 1.使用命名函数作为回调: 2.使用匿名函数作为回调: 三.回调函数中this是谁? 一.回调函数是什么? 是一个被作为参数传递给另一个函数的 ...
- Node.js回调函数
- cocos2dx[3.2](11)——新回调函数std::bind
[唠叨] 自从3.0引用了C++11标准后,回调函数采用的新的函数适配器:std::function.std::bind. 而曾经的回调函数menu_selector.callfunc_selecto ...
- 回调函数 相当于线程_阿里面试题:请简述下 Node 的线程模型
前言 如果你有一定的前端基础,比如 HTML.CSS.JavaScript.jQuery:那么,Node.js 能让你以最低的成本快速过渡成为一个全栈工程师(我称这个全栈为伪全栈,我认为的全栈也要精通 ...
最新文章
- jbpm4 org.hibernate.exception.ConstraintViolationException
- python 魔法参数*argv 和 **kw
- MyEclipse:Available memory is low解决办法
- Electron-builder打包安装程序遇到的问题解决方案
- Sequence 带来的更多乐趣
- 【DP】错排问题(ybtoj DP-1-1)
- php朋友圈上传多个图片不显示不出来,求教!文章分享到微信朋友圈,链接的缩略图不显示怎么解决?...
- L3-022 地铁一日游 (30 分)-PAT 团体程序设计天梯赛 GPLT
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_5 Mybatis的CRUD-查询返回一行一列和占位符分析...
- iphone计算机快捷键,苹果电脑ps快捷键大全
- CPA七--应交增值税(转载)
- 企业微信-付款到员工零钱
- 戴戒指的含义(以后要结婚的必看)
- VINS-MONO概述
- 一群不想鸡娃的直男程序员,决定对一支笔下手了
- access两位小数不进位_文章列表-火龙的博客 - PHP,GO,MySQL知识分享问题记录博客...
- java源码系列:HashMap底层存储原理详解——5、技术本质-原理过程-算法-取模会带来一个什么问题?什么是哈希冲突?为什么要用链表?
- 文件被占用删除不了?快来我给你一招解决!
- 计算机硬盘格式化了如何恢复出厂设置,电脑恢复出厂设置和格式化有什么区别...
- 支付宝企业账户单笔支付到个人账户
热门文章
- 15.selenium_case01
- 为什么人们爱听有声书?
- 1864: [Zjoi2006]三色二叉树
- 让你分分钟学会Javascript中的闭包
- 关于IIS和Serv-U在同一台服务器中端口冲突问题
- linux下mq的mc.sh在哪?,RocketMQ的安装与使用
- DPDK 报文收发流程(二十五)
- linux i3wm性能,Core i3-530集成显卡Linux性能考察
- axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求
- html每个段落空前空两格,科普:为什么段落开始要空两格(两个汉字)?