When adding a new `BlogPost` to the list we realize the component is over-rendering, as the numbers are increasing un-proportionally to the data we receive.
Try to implement operators that filter out values which should not get processed. e.g. empty arrays are not interesting to process.
Try to minimize the amount of renderings.
also, if multiple subscriptions get done on the same Observable we could try to share the processed result with all subscribers to reduce the number of processing.
Consider the following approaches:
- use `zip` to combine dependent changes
Also consider where and if `zip` could help here.
- filter out values which should not get processed
So far we have applied and discussed several operators to combine _independent_ `Observable` sources to a single stream. The `zip` operator combines
So far the discussed operators where always combining independent Observables,
multiple sources as well. Instead of managing them independently, the result is calculated in order.
and the processing get either done for each once of focusing on a primary stream.
`zip` is different here.
## Behavior
## Behavior
`zip` waits for every value of each involved Observable and forwards
`zip` waits for each source emitting a value and combines the result to a single output.
one emission for all incoming emissions, meaning it emits one time all first emissions together,
one time all second emissions together and so on and so for.
If values take longer than others it waits with the emission.
Also, if one stream is emitting faster than the other it is waiting with emissions and caches the emitted values until other included streams emitted the same number of times to emit them together.
An example where the emissions wait for their other related Observables could be two polling mechanisms that depend on each other.
```Typescript
In this example we use random intervals to demonstrate this:
Be aware that `zip` can buit up a huge cache if the emission rate is too different.
Be aware that `zip` can build a huge cache if emission rates are very different.
Also, if one of them never emits you have a memory leak.
If one of the sources never emits a value you will end up with a memory leak.

