回调的弊端

512 阅读1分钟

回调是编写和处理js程序异步逻辑的最常用方式,也是比较好理解的方式,但是用回调处理异步函数会存在很多问题。

2.1 continution 2.2 顺序的大脑 大脑和js引擎一样,是单线程工作,需要不停的切换上下文才能保证类似“多进程”的工作。

2.2.1 执行与计划
同步的大脑计划能够很好的映射到同步的代码语句,代码表达异步的方式并不能很好的映射到同步的大脑计划行为。

2.2.2 嵌套回调与链式回调
回调地狱也被称为毁灭金字塔。
一旦你预先计划了所有可能的事件和路径,代码就会变得非常复杂,以至于无法维护和更新。
嵌套和链式并没有本质的区别。
问题在于:我们顺序阻塞式的大脑计划行为无法很好的映射到面向回调的异步代码。

2.3 信任问题 控制翻转:把自己程序一部分的执行控制交给某个第三方。

2.3.2 五个回调的故事
对于被传给你的无法信任的工具的每个回调,你都将不得不创建大量的混乱逻辑。

2.3.2 不只是别人的代码
对于第三方输入的代码,需要进行检查。我们不得不自己构建全部机制,为每个异步回调重复这样的工作最后都变成了负担。
回调最大的问题是控制翻转,导致信任链完全断裂。

2.4 省点回调 ...

总结

回调最大的两个问题是:
1.缺乏顺序性。
2.缺乏可信任性。