回调函数

回调函数其实就是一种数据类型

函数可以作为参数、返回值、
函数很灵活,无所不能 一般情况下,函数作为参数的目的是为了获取函数内部的异步操作

  • javascript 单线程、事件循环
console.log(1);
setTimeout(()=>{
    console.log(2);
},1000)
console.log(3);
  • 结果:1 3 2
    不会等待 异步
    eg:
// 函数里面一个异步
function add(x,y) {
    console.log(1);
    setTimeout(function () {
        console.log(2);
        var ret=x+y;
        return ret
    },1000)
    console.log(3)
//到这里执行就结束了,不会等待定时器之家打印undermine   x  y没有值了
}
console.log(add(10,10));
  • 结果
    1
    3
    undefined
    2

eg

var ret;
function add(x,y) {
    console.log(1);
    setTimeout(function () {
        console.log(2);
         ret=x+y;
    },1000)
    console.log(3)
}
add(10,20);
setTimeout(function () {
    console.log(ret);

1
3
2
30(利用全部变量修改后获取,函数封装性破环不支持)

注意:凡是需要得到一个函数内部异步操作的结果

  • setTimeout
  • readFile
  • writeFile
  • ajax
    这种情况必须通过:回掉函数来解决 不是立即使用
  • 最终
function add(x,y,callback) {
    console.log(1);
    setTimeout(function () {
        console.log(2);
        ret=x+y;
        callback(ret);
    },1000)
    console.log(3)
}
add(10,20,function (ret) {
    console.log(ret);
});
  • 结果
    1
    3
    2
    30

总结:是把异步的数据通过一个函数把他作为这个函数的全局变量后调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值