创建粘性反应值(主题)

时间:2018-01-24 06:06:12

标签: typescript reactive-programming rxjs5

我打算创造一个反应性的价值"通用类型T具有以下属性:

  1. 它可以被多个订阅者用作观察。
  2. 第一个订阅者触发值计算。
  3. 将调度任何新订阅者的最后一个缓存值。
  4. 可以随时在外部设置新值,并将其发布给所有订阅者。
  5. 删除最后一个订阅者后,必须停止正在进行的计算。
  6. 在外部设置新值时,将忽略任何触发的计算结果。
  7. 预期用途:

    // calculates value on demand
    function getValue<Number>():Observable<Number>{
      // return an observable of some number, takes 1-2 seconds to calculate
    }
    
    // sticky observable of value
    const value = new StickyValue<Number>(getValue);
    
    // first subscriber triggers calculation
    value.subscribe((n) => console.log(n));
    
    // value can be set externally, the subscribers get this value ignoring any triggered calculation result
    value.next(500);
    
    // second subscriber gets value that was last set or last calculated
    value.subscribe((n) => console.log(n));
    

    假设:calculation()是一个简单的函数,它返回值

    的Observable

    通过评论,我发现BehaviourSubject已接近尾声。但它仍然不能满足条件2和6。

0 个答案:

没有答案