定义
什么是回调函数:作为参数的函数,会在某个不定的时机被调用
回调函数类型
- 同步回调
- 立刻执行,且完全执行后才结束,不会放入事件队列中
- 如:数组遍历相关的回调,Promise的excutor函数
- 异步回调
- 不立刻执行,会被放入事件队列中,等待将来执行
- 如:定时器回调、ajax回调、Promise的成功/失败回调
为什么异步操作要使用回调
- 异步操作完成的时间点是不确定的,无法通过一般的方式直接获得结果
- 只能通过给异步操作传入回调,或者注册事件
- 当异步操作完成后,就会自动调用回调,并将结果传入回调
回调地狱
回调函数间嵌套调用,且异步任务的开始是以上一个异步任务的完成为前提

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