17.Node.js 回调函数--异步编程
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html
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
非阻塞代码实例
创建一个文件 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
以上两个实例我们了解了阻塞与非阻塞调用的不同。第一个实例在文件读取完后才执行完程序。 第二个实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。
因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。
在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。
接下来让我们来重新看下前面的实例,创建一个 input.txt ,文件内容如下:
菜鸟教程官网地址:www.runoob.com
创建 main.js 文件,代码如下:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err){ console.log(err.stack); return; } console.log(data.toString()); }); console.log("程序执行完毕");
以上程序中 fs.readFile() 是异步函数用于读取文件。 如果在读取文件过程中发生错误,错误 err 对象就会输出错误信息。
如果没发生错误,readFile 跳过 err 对象的输出,文件内容就通过回调函数输出。
执行以上代码,执行结果如下:
程序执行完毕 菜鸟教程官网地址:www.runoob.com
接下来我们删除 input.txt 文件,执行结果如下所示:
程序执行完毕 Error: ENOENT, open 'input.txt'
因为文件 input.txt 不存在,所以输出了错误信息。
转载于:https://www.cnblogs.com/sharpest/p/8045856.html
17.Node.js 回调函数--异步编程相关推荐
- node.js 回调函数
Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数, ...
- [Node.js]回调函数
简介 Node.Js异步编程的直接表现方式就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了.回调函数在完成任务后就会被调用,Node使用了大量的回调函数,node所有api都支持 ...
- Node.js中的异步编程,个人理解及分化讲解
Nodejs Nodejs本身是单线程的,底层核心库是Google开发的V8引擎,而主要负责实现Nodejs的异步功能的是一个叫做libuv的开源库,github上可以找到它. 异步编程 Nodejs ...
- Node.js —— 回调函数callback
一.什么是回调函数 1.回调函数是作为参数传递给另一个函数 2.回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码 3. 函数运行完成,再执 ...
- Node.js回调函数
- js回调函数获取异步返回值
js回调函数获取异步返回值 1.尝试获取异步返回值 function test(){var res = 0;setTimeout(function(){res = 1;},1000)return re ...
- html js 回调函数,js中回调函数的学习笔记
回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你" ...
- js 回调函数小例子
js 回调函数小例子 1 <script> 2 //将函数作为另一个函数的参数 3 function test1(){ 4 alert("我是test1"); 5 } ...
- 【转】JS回调函数--简单易懂有实例
JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...
最新文章
- P2642 双子序列最大和(线性DP)(最大子段和 + 合唱队列)
- Html.Action,Html.RenderAction,Html.ActionLink,Url.Action区别
- [导入]XmlReader 读取器读取内存流 MemoryStream 的注意事项
- 数据库更新记录,但程序查不到新记录问题
- [云炬创业基础笔记]第十一章创业计划书测试9
- Lintcode9 Fizz Buzz solution 题解
- Flask项目--注册
- linux usb键盘驱动详解
- python 二分查找函数_Python基础14_递归函数,二分查找
- APICloud构建APK个文件作用说明
- 前端安全 XSS跨站脚本攻击-CSRF跨站请求伪造攻击
- Windows10下载CUDA总是下载失败的解决方案
- 使用tf2的saved_model进行推理
- 阿里巴巴本地生活——上海饿了么配送一面(一小时)
- html中背景条纹效果,使用CSS线性渐变 制作条纹背景
- python 容联云测试短信接口
- opencv函数cv2.warpAffine 和 cv2.warpPerspective 的理解和复现
- 位图文件, JPG格式,PNG格式
- 64匹马,8个赛道,找出跑得最快的4匹马,至少比赛几场?
- 概率算法c 语言,c语言概率算法简介(Introduction to probabilistic algorithms for c languages).doc...