前言
第一部分: 半协程调度器
- 统一生成器接口
- 生成器迭代
- 生成器返回值
- 生成器委托
- 改写 return
- 抽象异步模型
- 引入异常处理
- 异常: 嵌套任务透传
- 异常: 传递流程
- 异常: 重新进行 CPS 变换
- 异常: 重新加入 Async
- Syscall 与 Context
- 调度器: 里程碑
- spawn
- callcc
- race 与 timeout
- all 与 parallel
- channel 与协程间通信
- 无缓存 channel
- 缓存 channel
- channel 演示
- FutureTask 与 fork
第二部分: Koa
- 穿越地心之旅
- 洋葱圈模型
- rightReduce与中间件compose
- Koa::Application
- Koa::Context
- Koa::Request
- Koa::Response
- Koa - HelloWorld
- Middleware Interface
- Middleware: 全局异常处理
- Middleware: Router
- Middleware: 请求超时
- 一个综合示例
附录
参考
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
洋葱圈模型
洋葱圈模型
我们把函数从内向外组合,把内层函数的执行控制权包裹成next参数传递给外层函数,让外层函数自行控制内层函数执行时机,我们再一次把控制流暴露出来,第一次是引入continuation,把return决定的控制流暴露到参数中。
于是 我们可以在外层函数 执行next的前后加入自己的逻辑,得到 AOP 的before与after语义,但不仅仅如此,我们甚至可以不执行内层函数,然后我们穿越地心的过程沿着某个半圆绕过了地核。
再或者,我们也可以放弃after,函数成为 前置过滤器,如果我们放弃before,函数成为 后置过滤器。
关于错误处理,我们可以在某层的函数 try-catch next调用,从而阻止内层函数的异常向上传递,想想我们在地底深处包裹了一层可以抵御岩浆外太空物质,岩浆被安全的阻止在地心。
事实上这就是一个极简的洋葱圈结构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论