函数的回调

一 理论
```js // 回调的函数 function callback(data) {} // 逻辑函数 function func(callback) { // 函数回调 if (callback) callback(data); } // 函数回调的本质:在一个函数中(调用函数),当满足一定条件,调用参数函数(回调函数) // 回调函数作为调用函数的参数传入 // 回调函数通过参数将调用还是内部数据传出


二 代码示范

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>函数的回调</title>
</head>
<body>
函数的回调
</body>
<script type="text/javascript">
// 函数回调
// 在一个函数(fn)中,满足条件情况下,调用另外一个函数(func)
// 注:func函数 是 fn函数 的参数(函数作为函数参数传入)

// 解决问题:
// 请求数据 => 数据(return | 函数回调) => 外界

function a_fn(data) {
console.log('a_fn');
// 如果要使用数据,那么定义形参接收参数
console.log(data);
}

function b_fn(a_fn) {
var data = "b_fn 的 数据";
console.log('b_fn');
// 条件: a_fn有值(有函数实现体)
if (a_fn) {
// 调用参数函数
a_fn(data);
}
}
b_fn(a_fn);

// 1.一个函数(函数名)作为另外一个函数的参数
// 2.满足一定的条件,调用参数函数
// 3.形成了函数回调,回调的函数可以获取调用函数的局部变量(将数据携带出去)
</script>

<!-- 函数回调在系统中的使用 -->
<script type="text/javascript">
// 通常情况下,我们的页面标签存不存在点击事件? => 存在
// 点击事件触发后,可不可以对外传送数据 => 可以,eg:点在页面的什么位置
// 系统已经书写好了这种函数回调,但是没有回调体,回调体(回调函数)由普通开发者提供

// 钩子:满足条件情况下被系统回调的函数(方法),称之为钩子函数(方法) <=> 回调函数
document.onclick = function (a, b , c) {
console.log("点击事件");
console.log(a, b , c);
}
</script>
</html>


函数回调的数据请求

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>数据请求</title>
</head>
<body>

</body>
<!-- 外部要接收数据 -->
<!-- 1.外部给内部提供回调函数(函数名callback) -->
<!-- 2.内部将数据反馈给外部回调函数.外部就可以使用内部数据 -->
<script type="text/javascript">
var callback = function (data) {
// 使用数据
console.log(data);
}
</script>


<!-- 请求数据 -->
<script type="text/javascript">
try {
// 采用匿名函数自调用请求数据
(function (callback) {
console.log("开始请求数据...");
// ...
var data = [1, 2, 3, 4, 5];
console.log("数据请求完毕!!!");
// 如果回调函数存在,那么回调对应的函数,并将数据携带出去
if (callback) {
callback(data);
}
})(callback)
// 请求数据完毕之后,需要让外界获取请求的数据:
// 1.函数返回值: 函数的自调用,不存在其他调用者,也就无法获取函数的执行结果 => 行不通
// 2.函数回调
} catch (err) {

}
</script>
<!-- 外部要接收数据 -->

</html>



posted @ 2018-10-15 19:41  不沉之月  阅读(142)  评论(0编辑  收藏  举报