例子:
// Aajax( "..", function(..){// C} );// B
// A和// B表示程序的前半部分(也就是现在的部分),而// C标识了程序的后半部分 (也就是将来的部分)。前半部分立刻执行,然后是一段时间不确定的停顿。在未来的某个时刻,如果 Ajax 调用完成,程序就会从停下的位置继续执行后半部分。
换句话说,回调函数包裹或者说封装了程序的延续(continuation)。
简化代码:
// AsetTimeout( function(){// C}, 1000 );// B
一旦以回调函数的形式引入了单个 continuation(或者几十个),我们就容许了大脑工作方式和代码执行方式的分歧。一旦这两者出现分歧,就会使代码变得更加难以理解、追踪、调试和维护。
