/ / rxjs: - prijímajú hodnoty emitované pred odberom - uhlové, rxjs, pozorovateľné

rxjs: - prijímať hodnoty emitované pred upisovaním - uhlové, rxjs, pozorovateľné

môj emit.next(1) je stratená, chcem, aby môj odberateľ získal túto hodnotu. Môj odberateľ sa nemôže prihlásiť na odber až potom, čo už k emisii došlo.

Táto odpoveď navrhuje zverejnenie a pripojenie RxJs: ako získať hodnoty emitované predtým, ako sa prihlásime na odber? nebol som si však istý, ako to funguje:

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")

výkon:

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 "!"

mal by sa prihlásiť 1 "!"

odpovede:

6 pre odpoveď č. 1

použitie BehaviorSubject alebo ReplaySubject namiesto Subject alebo jednoduché Observable, noví predplatitelia dostanú poslednú vydanú udalosť ako prvú hodnotu.