take
accepts
1
input stream,
an amount
amount
, the value is emittedamount
, the value is emitted and the stream immediately completesreturns
a new stream of at most amount
values
last
accepts
1
input stream,
a predicate
(optional)
returns a new stream of at most one value
As soon as the input stream emits its last value, the output stream emits it? Naaah! How could one be certain that no value comes after? Reactive programming can’t see the future.
We have to wait for a ◉ complete
notification (read Take 3 and complete to learn more about it). Only when the stream has completed, we know this value was the last one – and this completion may never happen!
In the animated comparison above, ❚ take
returns a stream with a ◉ complete
notification overlapped by the 3
value, as it completes immediately. I would like to emphasize that this notification is not intended to deliver the last value of the stream. It is a separate event, without a value (though it can happen immediately after an event value). ❚ last
and ❚ take
work with an input stream that completes a few seconds after the last value emitted.
Notes
◉ complete
notification is a special event with no value❚ last
is based on this notificationFreelance Developer Advocate. Motion graphics with code. JavaScript and Elm. cedricsoulas.com
Receive my latest news, product updates and programming visualizations. You can unsubscribe at any time.