0

For example, I have an observable that emits a 10-second timer every 5 seconds. I can use scan to create an observable that emits an array of all the inner observables emitted so far:

tick = 5000
tock = 1000
timers = Observable.interval(tick).scan( (acc, next) => {
    let timer = Observable.interval(tock).take(10);
    return acc.concat([timer]);
}, []);

But what if I want to emit it to emit an array of all "live" timers (i.e. those that haven't called complete yet)?

Here's a crappy ascii marble diagram of what I'm thinking of:

-A--B-----
  \  \
   \  \
    \  x
     x
 |  |    |
[A][A,B] []

Is there a way to do this using the standard operators, or is this just not an idiomatic thing to try to do with rxjs?

Coquelicot
  • 8,775
  • 6
  • 33
  • 37

1 Answers1

1

You should be able to use the "active" method described in this answer to achieve what you want:

Rx: a zip-like operator that continues after one of the streams ended?

Community
  • 1
  • 1
Matt Burnell
  • 2,646
  • 1
  • 22
  • 23