【问题标题】:What is the best way to create an Observable which directly emits after creation? [closed]创建一个在创建后直接发出的 Observable 的最佳方法是什么? [关闭]
【发布时间】:2020-05-16 11:12:40
【问题描述】:

我在问自己,创建一个在创建后直接发出的 observable 最合适和语义正确的方法是什么?

当然,我总是可以做这样的事情of(unkown)of(undefined)of(null)of(true) 等等,但是“正确”的方法是什么,有什么参考吗?

【问题讨论】:

  • 不清楚的问题,因为of(SOMETHING) 仍然是cold 并且只能在订阅后运行
  • 是的......这个问题是基于选项的......但是问如何编写语义正确的代码有什么问题?
  • 1rts - 不是我投反对票,第二 - of(true)Promise.resolve(true) 之间存在差异,因为对于 of(true),您需要订阅,例如它很冷(懒惰评估)并且无论您何时希望它们运行,promise 都会运行 - 这不是语义上的差异,而是惰性与急切评估的差异。
  • 这就是为什么从问题中不清楚你想做什么+是的,这个问题至少没有关于“创造性可观察物”的“研究工作”

标签: angular typescript rxjs observable


【解决方案1】:

您需要创建一个BahviorSubject,它继承自Subject,而Subject 继承自Observable

在构造函数中,它接受一个在创建时发出的值

x : BehaviorSubject<number> = new BehaviorSubject<number>(10);

【讨论】:

    【解决方案2】:

    .of() 是正确的方式,这就是它存在的原因。

    【讨论】:

    • 我没想过忽略这个参数,但是,基本上这会和of(undefined)一样吗?
    • .... 测试它of(true) 直接发射of() 不是
    • 我在测试之前对答案进行了投票,因为它看起来合乎逻辑....但这是错误的,...我已经测试过了,您可以在of 中输入任何值作为参数,只要有即使是未定义的值,observable 也会发出,但如果你只是做of(),则 observable 不会发出
    • @Nickolaus 这是预期的行为:of with value 发出该值; of 没有 - 没有。那里有什么问题?逻辑上of()等于of(undefined)。此语句推广到任何f()f(undefined)
    猜你喜欢
    • 1970-01-01
    • 2014-01-22
    • 2023-02-25
    • 2018-06-07
    • 2012-01-28
    • 2019-11-23
    • 2012-01-19
    • 2021-08-30
    • 2017-08-06
    相关资源
    最近更新 更多