rxjs: - 收到订阅前发出的值

rxjs: - 收到订阅前发出的值

问题描述:

我的emit.next(1)已丢失,我希望我的订户获得该值。我的订阅者在订阅发布之后才能订阅。rxjs: - 收到订阅前发出的值

这个回答表明,发布和连接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 "!"

+3

我猜你可以使用'ReplaySubject' ... – martin

使用BehaviorSubjectReplaySubject而不是Subject或简单Observable,然后新订户将获得最后一次发布的事件作为第一个值。