回调函数

回调函数

        js 是同步的语言;执行顺序是冲上往下的
        
        回调函数是异步的
        
        代码的执行顺序分为:同步 异步
        同步 弊端:会发生执行阻塞
                  异步不会发生阻塞
        异步:未来某一时刻需要执行的代码,优先执行,同步是按照代码的编写顺序从上往下执行,
              异步不会等待其他代码执行,所有的代码,谁快谁先执行
        
        js中异步:
        回调函数(ES5)  promise对象(ES6)  async await (ES7)

回调函数:
一个定义的函数,作为另一个函数的实参传入到另一个函数中

回调函数执行:
  * 自动执行: 针对一些内置的API 自动触发 例如 sort
  * 手动执行: 自定义的函数传入的回调函数需要我们自己 写 xxx() 触发

优点: 异步处理程序
缺点: 容易形成毁掉地狱,代码让人看不懂

promise对象解决【回调地狱】问题 :
弊端:.then .then 链式结构很麻烦
推荐: async await 【同步写法异步程序,离不开promise 因为await会后必须是promise对象】

回调函数执行步骤:
*1:当函数作为实参传入是---->决定了【异步程序】
* 2:当回到函数执行时候------> 【异步开始了】
* 3:当回调函数方法体代码执行完毕或者有【返回值】时 ----> 异步执行完毕
* 4:外界只要接收到【返回结果】 或者执行完毕效果 ----->【外界已经知道异步执行完毕】
* 5:异步执行完毕后,外界开始处理其他业务

eg:    fn(call)         //将 call 函数以实参的形式传入 fn 函数中
        function fn(callback) {           // callback  =  call()
        
            callback(call2)     // 执行 call() 函数,并把 call2() 函数以实参的形式传入 call() 函数中
            console.log('我是一个函数')
        }
        function call(callback) {     // callback  =  call2()
            callback()             // 执行 call2() 函数
            console.log('我是一个回调函数')
        }
        function call2(){
            console.log('我是第二次对调函数')
        }

    执行顺序:call2() ——> call() ——> fn()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值