javascript 回调(js回调函数原理)

1、回调一般作为一个参数中写一个函数来实现的,格式如下:

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

* callback 代表回调函数

举例如下:

例1:阻塞代码实例 (无回调时)

1、创建一个文件 input.txt ,内容如下:菜鸟教程官网地址:www.runoob.com

2、创建 main.js 文件, 代码如下:

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

以上代码执行结果如下(按顺序执行):

$ node main.js 菜鸟教程官网地址:www.runoob.com 程序执行结束!

例2:非阻塞代码实例(有回调时)

1、创建一个文件 input.txt ,内容如下:菜鸟教程官网地址:www.runoob.com

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

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

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

例3: $p.hide('slow',function(){ 函数内容 }); ===这个是在第一个参数实现后,再调用第一个参数,即函数

 

2、回调的原理:

例1:var fs = require('fs');

fs.readFile('somefile.txt','utf8',funtion(err,data){

if (err) throw err;

console.log(data);

});

执行步骤:

1、fs 模块请示;

2、将文件系统上的路径作为第一个参数;

3、第二个参数表示文件编码;

4、将回调函数作为第三个参数;

5、回调函数的第一个参数是err,表示文件读取有错时调用

6、回调函数的第二个参数是data,即显示文件内容;

javascript 回调(js回调函数原理)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论