美文网首页Rxjs探险之旅
[RXJS探险ep.1] 传销头子Subject_咱俩有误会

[RXJS探险ep.1] 传销头子Subject_咱俩有误会

作者: _老孟_ | 来源:发表于2018-12-13 11:11 被阅读0次

最近在做这个数据可视化项目,为了防止用户狂刷不止,尝试引入Rxjs做回压处理。在开发中老孟错误地使用了Subject,而且这个错误是共性的,此篇记录探险过程。


开局一张图,上边那个不算

上图来自这篇文章文中如此描述Subject:

Subject is both an Observable and Observer

结尾对Suject的使用场景有明确的介绍:

When to use Subject

You need to share the same observable execution.
When you need to decide what to do when an observer arrives late, do we use ReplaySubject, BehaviorSubject?
You need full control over the next(), error() and complete() methods.

S有Observable & Observer双重身份,是为处理多播而存在的。

依老孟看,S跟搞传销的差不多:既能收货(数据),又把货发给一众下游。我可以这样:

const subject = new Subject();
subject.next('1');
subject.next('2');
subject.subscribe( console.log);

那我为什么还要辛苦用O?全用S不就成了?不多播难道不让用吗?直觉告诉我这里头有事,调查一下:

我在Rxjs中文社区,找到了另一篇文章:[译]关于 RxJS 中的 Subject。文章开头就提到了我的问题:

.......(S)很有帮助,但这不是以 “Rx 的方式”在处理问题。理想的是在 Observable 中包装事件注册,既可以监听事件,又可以取消事件监听。看起来像这样:

  const clicks = new Observable(observer => {
    const handler = (e) => observer.next(e);
    button.addEventListener('click', handler);
    return () => button.removeEventListener('click', handler);
  });

风格原因?这不足以让老孟抛弃Subject,所有逻辑是全挤在一个方法里太烦人了。继续调查:
......
......
好吧...老孟选择直接做伸手党 ,联系到了Rxjs中文社区的发起者,”大哥一下“:



大哥永远会把你的问题变成更多问题:
  1. 乱用命令式的S会有带来怎样的具体问题?
  2. asObservable是个啥?(语义上来看应该是将S视为O)
  3. 如何用O代替S(或者说‘如何将S变成O’)?
    (ps: 虽然egghead搞圣诞节打折,但年费也要十张毛爷爷,md,这年头没钱想搬砖都搬不起)

中文资料已经不能满足老孟了,沿着大哥的提示找到了egghead上的教学。虽然老孟买不起,但是提供了key供我搜索。我google到了这篇文章:Converting A Subject To An Observable Using RxJS In Angular 2,看标题就知道,这篇文章很老,但思想是正确的,切实的解决了我的疑惑(请注意这篇的作者Ben Nadel和Ben Christensen不是一个Ben)

对于这篇文章的解读,且听下回分解~~

相关文章

  • [RXJS探险ep.1] 传销头子Subject_咱俩有误会

    最近在做这个数据可视化项目,为了防止用户狂刷不止,尝试引入Rxjs做回压处理。在开发中老孟错误地使用了Subjec...

  • 暴砍传销头子

    李某被骗进了传销窝。 李某想走。可是传销场所把他手机给收了。 李某越想越窝囊。 不让走是吧? 特么偏要走 阻拦李某...

  • 深度:为什么老人那么喜欢买保健品?真的是老糊涂了吗?小看人

    关于传销的,最近新闻较多,传销组织的谋财洗脑伤人害命,已经引起社会公愤。那些留言说,传销头子必须判处死刑的观点,也...

  • 浅析Angular之RxJS

    本文结构: 什么是RxJS RxJS有什么特点 RxJS核心概念 什么是RxJS 在javaScript中,我们可...

  • 石头子语12~误会

    误会,是一种病毒感染引起的。病毒的名字叫“自私”!觉者自愈,悟者预防。

  • 套路王中王

    第一弹 咱俩得聊聊 第二弹 咱俩得冷静冷静 第三弹 真挺对不起你 第四弹 误会了 想多了

  • 你误会的传销

    故事 小海跟大海是好兄弟,一起上的大学,大学毕业那年大海回家教书,小海南下闯荡。 大海在老家农村做小学教师,由于家...

  • 01RxJS-响应式编程类库

    rxjs-响应式编程类库)RxJS官网[https://rxjs.dev/] RxJS(Reactive Exte...

  • RxJS

    RxJS官网[https://rxjs.dev/] 1 概述 1.1 什么是 RxJS ? RxJS 是一个用...

  • Rxjs系列教程目录

    RxJS-中文文档RxJS-中文指南 rxjs学习入门心得(一)Observable可观察对象rxjs学习入门心得...

网友评论

    本文标题:[RXJS探险ep.1] 传销头子Subject_咱俩有误会

    本文链接:https://www.haomeiwen.com/subject/ijyvhqtx.html