定义

什么是回调函数:作为参数的函数,会在某个不定的时机被调用

回调函数类型

  1. 同步回调
    • 立刻执行,且完全执行后才结束,不会放入事件队列中
    • 如:数组遍历相关的回调,Promise的excutor函数
  2. 异步回调
    • 不立刻执行,会被放入事件队列中,等待将来执行
    • 如:定时器回调、ajax回调、Promise的成功/失败回调

为什么异步操作要使用回调

  1. 异步操作完成的时间点是不确定的,无法通过一般的方式直接获得结果
  2. 只能通过给异步操作传入回调,或者注册事件
  3. 当异步操作完成后,就会自动调用回调,并将结果传入回调

回调地狱

回调函数间嵌套调用,且异步任务的开始是以上一个异步任务的完成为前提

未命名图片.png

  1. 如果想要在一个异步任务完成后,再开始下一个异步任务
  2. 就需要在异步任务的回调中进行异步操作,再给异步操作指定回调
  3. 以此循环,就形成了回调的嵌套,过多时,就成为了回调地狱
  4. 可读性与可维护性十分差