我们把函数从内向外组合,把内层函数的执行控制权包裹成next参数传递给外层函数,让外层函数自行控制内层函数执行时机,我们再一次把控制流暴露出来,第一次是引入continuation,把return决定的控制流暴露到参数中。
于是 我们可以在外层函数 执行next的前后加入自己的逻辑,得到 AOP 的before与after语义,但不仅仅如此,我们甚至可以不执行内层函数,然后我们穿越地心的过程沿着某个半圆绕过了地核。
再或者,我们也可以放弃after,函数成为 前置过滤器,如果我们放弃before,函数成为 后置过滤器。
关于错误处理,我们可以在某层的函数 try-catch next调用,从而阻止内层函数的异常向上传递,想想我们在地底深处包裹了一层可以抵御岩浆外太空物质,岩浆被安全的阻止在地心。
事实上这就是一个极简的洋葱圈结构。