培根对我来说仍然是个大惊喜...
bus = new Bacon.Bus()
busProperty = bus.toProperty()
bus.push 'someValue'
busProperty.onValue (val) ->
console.log val
这样,根本没有任何内容记录到控制台。我可能从错误的角度看,但我希望,财产提供的是最新的价值。显然,这并不容易......
busProperty.log()
bus.push 'someValue'
busProperty.onValue (val) ->
console.log val
突然间,我得到了'someValue'两次登录。这意味着在有消费者之前,财产不关心流价值?有可能以某种方式克服这个问题吗?似乎相当愚蠢,我需要附加空的消费者只是为了将价值存储到Property中。
这是我的应用设计的一部分,该流在连接任何消费者之前都会获得价值。但是,我确实关心过去的价值。基本上我正在寻找Promise / A的同步版本:)
答案 0 :(得分:0)
这是一个已知问题,但"设计"。 FAQ条目Why isn't my Property updated?解释说:
这里发生的事情是您的财产何时无法更新 没有听众。在使用之前添加实际侦听器之前 onValue,该物业不活跃;它没有听 底层巴士。在有人感兴趣之前,它会忽略输入。所以这一切 归结为" laziness"所有培根流和属性。这个 也是一个关键功能:流自动"插入"他们的 添加订户时的来源,以及"拔掉"什么时候没有 更多订阅者。
您可以考虑使用 而是Bacon.Model。那' 11 给你一个"可设置的属性"还有许多其他功能。