回调函数

介绍

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

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

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

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

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

阻塞代码(同步)实例

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

1
laji shesl's test case

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

1
2
3
4
5
6
var fs = require("fs");

var data = fs.readFileSync('test.txt');

console.log(data.toString());
console.log("done!");

以上代码执行结果如下:

1
2
3
4
$ node mainsync.js
laji shesl's test case

Done!!

非阻塞代码(异步)实例

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

1
laji shesl's test case

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

1
2
3
4
5
6
7
8
var fs = require("fs");

fs.readFile('test.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("Done!!");

以上代码执行结果如下:

1
2
3
$ node mainasync.js
Done!!
laji shesl's test case