No entiendo algo en rxjs. ¿Por qué este ejemplo reproducible crea una segunda instancia reiniciada de contador cuando alguien:
¿Por qué parece que el acumulador observable fue clonado durante la segunda suscripción? Gracias.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Reprex rxjs</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.5/rxjs.umd.js"> </script> </head> <body> <button id="inc_button">Click me to increase</button> <button id="go_button">Start second counter</button> </div> <script> let score_calc = rxjs .fromEvent(document.getElementById('inc_button'), 'click') .pipe(rxjs.operators.scan(acc => acc+1, 0)); score_calc.subscribe(x => console.log('score1',x)); rxjs .fromEvent(document.getElementById('go_button'), 'click') .pipe(rxjs.operators.first()) .subscribe(()=> score_calc.subscribe(x => console.log('score2',x))); </script> </body> </html>Nota: soy un novato en JavaScript.
Esto tiene más que ver con rx que con javascript. Busque la diferencia entre los observables calientes y fríos y encontrará operadores que le permiten compartir transmisiones entre múltiples suscriptores.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Reprex rxjs</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.5/rxjs.umd.js"> </script> </head> <body> <button id="inc_button">Click me to increase</button> <button id="go_button">Start second counter</button> </div> <script> let score_calc = rxjs .fromEvent(document.getElementById('inc_button'), 'click') .pipe( rxjs.operators.scan(acc => acc+1, 0), rxjs.operators.shareReplay(1) ); score_calc.subscribe(x => console.log('score1',x)); rxjs .fromEvent(document.getElementById('go_button'), 'click') .pipe(rxjs.operators.first()) .subscribe(()=> score_calc.subscribe(x => console.log('score2',x))); </script> </body> </html>