5、Node.js 回调函数

内容:回调函数;阻塞/同步、非阻塞、和异步区别;阻塞和非阻塞代码实例

Node.js 回调函数
Node.js 异步编程的直接体现就是回调。
异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

阻塞/同步:打一个电话一直到有人接为止
非阻塞:打一个电话没人接,每隔10分钟再打一次,知道有人接为止
异步:打一个电话没人接,转到语音邮箱留言(注册),然后等待对方回电(call back)

####################################################################################
阻塞代码实例
input.txt:love A

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

执行结果:
love A
程序执行结束!

####################################################################################
非阻塞代码

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

执行结果:
程序执行结束!
love A

回调函数一般作为参数的最后一个参数出现:
function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }
像上面的例子

这个还不是很明白,这里看到阻塞的代码,readFileSync,sync这个应该是同步的方法,所以一定要执行完毕,第二个例子的readFile是异步的方法,不阻塞,直接进行下一个步骤。

原文地址:https://www.cnblogs.com/-nbloser/p/9097268.html

时间: 2024-10-05 23:50:07

5、Node.js 回调函数的相关文章

Node.js 回调函数 1) 阻塞 ,同步 2) 非阻塞 ,异步.

1.阻塞. 同步. 1) 读取的文件: input.txt 菜鸟教程官网地址:www.runoob.com 2) main.js 1 var fs = require("fs"); 2 3 //同步读取, 阻塞代码,按顺序执行的 4 var data = fs.readFileSync('input.txt'); 5 6 console.log(data); 7 console.log(data.toString()); 8 console.log("程序执行结束!"

【Node.js学习四】 Node.js回调函数

Node.js 回调函数 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数. 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回.这样在执行代码时就没有阻塞或等待文件 I/O 操作.这就大大提高了 Node.js 的性能,可以处理大量的并发请求. 下面对阻塞代码和非阻塞代码分别举出一例

node.js 回调函数、事件循环、EventEmitter ar

异步编程  node.js 编程的直接体现就是回调,异步编程依托于回调来实现: node使用了大量的回调函数,所有API都支持回调函数 .如读取文件等. 这里对不懂线程和异步和同步的稍微解释下这三个名词 . 线程 : 简单的说就是做一件事 . 即执行一段程序代码 .js引擎就是一个单线程 的 处理 方式 .单线程是说 同一时间只能做一件事 . 同步 :就是这件事必须要先做完前面的才能做后面的,否则后面的无法完成. 这就像我们的js代码会从上往下 运行 . 异步 :简单的说就是两个线程,你做你的,

Node.js 回调函数

callback: A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数.

同步和异步 以及node js 回调函数

1.创建一个input.txt 文本文件   里面随便写一些内容 2.创建main.js文件 var fs = require("fs"); var data = fs.readFileSync('input.txt');(这个地方一定要加上后缀的名字) console.log(data.toString()); console.log("程序执行结束!"); 3.上述为同步的代码 执行结果如下 $ node main.js 菜鸟教程官网地址:www.runoob.

node.js回调函数

Node.js 异步编程的直接体现就是回调. 阻塞代码var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束!"); //readFileSync()同步的方式读取文件 //执行结果如下 $ node main.js xxxxxxxxxxxxxxx(input.txt内容) 程序执行结束! 非阻

node.js回调函数 - 阻塞与非阻塞

1.阻塞调用(读取完文件再执行后面的操作) var fs = require("fs"); var data = fs.readFileSync('/fs.txt'); console.log(data.toString()); console.log("程序执行结束!"); 输出结果: “文件内容” “程序执行结束!” 2.非阻塞调用(读取文件和其他操作同步执行) var fs = require("fs");  fs.readFile('/f

JS回调函数(理解篇)

概述: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 定义: 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. 因此callba

Promise解决node.js回调问题

Promise就是为了解决回调的! 在npm包中有个叫Q的家伙就是专门封装promise解决回调问题的. 有关promise介绍以及Q的介绍点这里. 下面介绍如何利用Q把只提供回调函数方式的api封装成promise模式:(以官方fs为例) Q中有两种方式封装函数成promise对象,分别是Q defer 和 Q promise: /**  * try to use q to handle async  * @cjp   2014-07-15  */ var Q = require('q');