Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

298
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!