Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

297
Vistas
The second RxJS `scan' operator does not continues from the previous one?

I have the following RxJS code: code example /* The result is: 4 9 15 4 9 15 */ ... why does the second scan start from the beginning (4,9,15) and does not continues from the previous scan (displaying 19,24,30). It is the same stream after all?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

observables does not work like that. You have to see them as a flow of water, where you can change the water with operators. Every time you do something with numbers$ you are starting a new flow of water. So the first pipe has nothing to do with the other pipe and vice versa.

If you want to have return value about the first scan you have to save the return value of the pipe and extend it with an extra pipe.

// 'scan' test
let numbers$ = from([4, 5, 6]);

let val1 = numbers$
  .pipe(
    // Get the sum of the numbers coming in.
    scan((total, n) => {
      return total + n
    }),

    // Get the average by dividing the sum by the total number
    // received so var (which is 1 more than the zero-based index).
    //map((sum, index) => sum / (index + 1))
  )

val1.subscribe(x => console.log('value of the first scan is', x))
val1.pipe(
  scan((total, n) => {
    return total + n
  })
).subscribe(console.log);

Or you can add another scan into the pipe. But then you will lose the value of the first scan:

let numbers$ = from([4, 5, 6]);

numbers$
  .pipe(
    // Get the sum of the numbers coming in.
    scan((total, n) => {
      return total + n
    }),
    scan((total, n) => {
    return total + n
  })
    // Get the average by dividing the sum by the total number
    // received so var (which is 1 more than the zero-based index).
    //map((sum, index) => sum / (index + 1))
).subscribe(x => console.log('value of the second scan is', x))
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda