代码之家  ›  专栏  ›  技术社区  ›  Tomas

具有自定义创建逻辑的RxJS BehaviorSubject

  •  1
  • Tomas  · 技术社区  · 6 年前

    因为 BehaviorSubject 延伸 Subject 延伸 Observable ,这三个都是静态的 .create(observer) 方法使用自定义值创建它们。
    我能用得很好 Observable.create(observer) ,例如:

    a = Rx.Observable.create(obs => {
        setInterval(() => {
            obs.next('tick');
        }, 500)
    })
    s = a.subscribe(v => console.log(v))
    

    给我期望的输出( tick 每500毫秒)

    但当我替换 可观察的 具有 / 行为主体

    a = Rx.Subject.create(obs => {
        setInterval(() => {
            obs.next('tick');
        }, 500)
    })
    s = a.subscribe(v => console.log(v)); // Nothing
    a.next(5); // Still nothing
    

    new 操作员如下:

    a = new Rx.Subject();
    s = a.subscribe(v => {console.log(v)});
    a.next(5) // Ok, got value here
    

    a = Rx.Subject.create();
    

    我仍然无法强制它发出值。

    我知道主体是被设计来接收来自外部世界的值的(不是在内部生成它们作为可观察的),因此主体应该被外部代码触发 subject.next('value') ,但我只是好奇,如果它们严格地与可观察物相关,逻辑就在后面 create 进一步的行为应该是一样的。。。

    创造 主题 (即使它们的设计不是这样的,但它仍然是可能的)不按预期工作吗?

    0 回复  |  直到 6 年前