- 本文适合人群:了解Rx编程人士、
Javascript
发烧友- 本文涉及概念:响应型编程、NodeJs、函数式编程
本人自从读过一篇来自Info的《函数式反应型编程(FRP) —— 实时互动应用开发的新思路》后便迷恋上了Rx,甚至以当时的Rxjs库移植了一套适用于Flash的AS3.0的Rx库ReactiveFl,也在实际开发中不断实践体会其中的乐趣。最近在知乎上无意中看到有人提到了一个名为callbag的项目,引发了我很大的兴趣,甚至×××观看了作者的视频Callback Heaven - Andre Staltz看完视频,我久久不能平静,这是多么的奇思妙想,然而当我运行了作者代码库里面的性能测试的时候,另一个不为人所知的库出现了,叫做Most。这个库性能了得,远远超过同类的库,然后我就想是否可以结合两者的优势,创造出性能高超,但设计巧妙又通俗易懂的Rx库呢?于是我做了如下的尝试:
成都创新互联网络公司拥有10年的成都网站开发建设经验,1000多家客户的共同信赖。提供成都网站建设、网站制作、网站开发、网站定制、买链接、建网站、网站搭建、成都响应式网站建设公司、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务受到以上的启发,我又实现了Golang的Rx库
源码请关注我的github,https://github.com/langhuihui
要实现一个Rx库,关键在于实现数据的推送以及消费过程中的四个基本功能:
生产者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Start value value error Done
消费者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Subscribe onNext onNext onError onComplete
上述过程中,如果用户调用了unSubscribe/Disopse的方法,就可以中断,从而不再触发任何事件
本人利用js的Proxy类,实现了一个库同时实现两种书写模式的解决方案,我会在后续的文章中解释其中的原理。
(未完待续)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。