个人理解:回调的本质就是将函数作为参数传递,而函数 近似 操作。所以, 有别于普通参数传递的是数据,Callback
传递的是操作或逻辑
优势
- 解耦: 完成逻辑的分离,要做什么(调用者)与何时做分离(被调用者)
- 内存高效:避免一次性加载所有数据到内存,特别适合处理流式数据或大量数据(例如避免放到集合在遍历)
- 灵活性:允许调用者自定义处理逻辑,提高代码复用性
- 实时处理:数据可以立即处理,降低延迟
- 资源控制:可以轻松实现提前终止、错误处理等控制流
- 组合性:可以方便地组合多个回调函数,实现复杂的数据处理管道
- 事件驱动:天然适合事件驱动的编程模式
- 接口一致性:提供统一的接口处理不同类型的操作
控制反转
- 普通函数调用:调用者控制执行流程
- 回调:被调用者决定何时执行操作
- 控制权从调用者转移到被调用者