【问题标题】:rxjs: - receive values emitted before subscriberxjs: - 接收订阅前发出的值
【发布时间】:2017-08-01 11:12:06
【问题描述】:

我的emit.next(1) 丢失了,我希望我的订阅者能够获得该价值。我的订阅者要等到发射已经发生之后才能订阅。

这个答案建议发布和连接RxJs: how to get values emitted before we subscribe? 但是我不知道如何让它工作:

console.log('make emit')
let emit = new Subject<number>();
console.log('make obs')
let obs = emit.asObservable()
console.log('emit 1')
emit.next(1)
console.log('subscribe')
obs.subscribe((v)=>console.log(v,'!'))
console.log('emit 2')
emit.next(2)
console.log('set timeout 1000 to emit')
setTimeout(()=>emit.next(3),1000)
console.log('done')

输出:

make emit
main.bundle.js:1561 make obs
main.bundle.js:1563 emit 1
main.bundle.js:1565 subscribe
main.bundle.js:1567 emit 2
main.bundle.js:1566 2 "!"
main.bundle.js:1569 set timeout 1000 to emit
main.bundle.js:1571 done
main.bundle.js:1566 3 "!"

它应该记录1 "!"

【问题讨论】:

  • 我猜你可以使用ReplaySubject...

标签: angular rxjs observable


【解决方案1】:

使用BehaviorSubjectReplaySubject 而不是Subject 或普通Observable,那么新订阅者将获得最后一个发出的事件作为第一个值。

【讨论】:

  • 很好,这可以帮助我解决我的代码问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
相关资源
最近更新 更多