摘要:
前两篇的快速链接 pipe与flow option, map, flatten 与 chain Either (fp-ts/lib/Either) 用来表示一个同步操作,该操作可能成功也可能失败。TaskEither是Either的异步版本,后面的随笔再作介绍。 Right、Left是Either的 阅读全文
摘要:
继第一篇之后,本文将介绍fp-ts中的option,map,flatten与chain。 option 作为一个容器,其所包含的内容可以为空(undefined),配合pipe使用可以提供安全的数据操作。如果遇到数据为空,则pipe后续方法不执行。代码示例如下: import { pipe } fr 阅读全文
摘要:
fp-ts是typescript下的函数式编程框架,抱着了解函数式编程的目的,记录下fp-ts的学习过程。此文为第一部分:pipe与flow mkdir [项目名称] cd [项目名称] npm init --y npm install typescript fp-ts ts-node --save 阅读全文
摘要:
Serverless Computing(或称为函数计算CFC)如今已是各大云平台的标准功能。中小型应用(包括Web, Rest API, 定时任务等)都可以通过函数计算实现。其灵活性强,扩展性高,费用相对低。 灵活性强,扩展性高 显然一个原子服务就可以定义成一个函数,多个函数之间可以自由组合,自然 阅读全文
摘要:
本文将介绍如何通过RxJS+TS实现模块间的松耦合。所谓松耦合是指模块间不能存在显式的引用关系。公司项目中经常看到junior程序员写出如下的代码: var moduleA = { foo: function() { moduleB.doSomeThing(); moduleC.doSomeThin 阅读全文
摘要:
最近在研究RxJS的编程思想,与OOP不同,RxJS更像是事件驱动+观察者模式,前一篇文章有所介绍。有经验的读者想必会有个疑问:Observable与Promise模式,或者说OOP到底区别在哪里,能带来什么不同呢? 我的理解是(此处为个人理解):Observable更好地实现了解耦。如同我们用消息 阅读全文
摘要:
如果用一句话阐述对于observable的简单理解,我会这么说:事件流(event stream) + 观察订阅模式(observe/subscribe pattern)。 observable相比promise,可以更好地实现函数式编程、支持取消、可以有多个事件的订阅者,等等。 在以往的项目实践中 阅读全文
摘要:
高并发场景下容易出现的超卖问题(一张票卖给两个客户,或是库存卖成负数),一个常用的解决方法就是加锁。对于单机系统,内存级别的锁就足够应付(如c#中的lock);对于分布式系统Redis往往是一个常见的选项。当然,有一点要清楚的是:加锁有可能会影响代码执行效率,不是所有场景都适合加锁。 这里为了简化问 阅读全文
摘要:
之前的文章介绍了QueryBus, CommandBus的用法(这里的bus可以翻译为总线:查询总线、命令总线)。使用这些总线(设计模式)的目的在于实现Controller层与Business Logic层(示例中对应的是Commands/Queries下的Handler)的解耦。然而,通常在Bus 阅读全文
摘要:
继前一篇讲述了NestJS中CQRS的Query部分的实现,本文会在此基础上讲述Command部分的基础实现(高级实现会在下一篇介绍)。 在之前代码的基础上增加: src/comments/commands文件夹,结构如下: add-comment.handler.ts import { Comma 阅读全文