id | mainCompare | lesson | image | compare | learnBackAbout | learnAbout | title | layout | class | preview_image | preview_image_alt | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
first |
take |
19 |
first/Take1vsFirst.jpeg |
|
takeWhile |
skipWhile |
Reactive Programming - Are Last and First symmetrical? |
default |
post |
first/LastVsFirst.jpeg |
The "first" operator |
In RxJS, first accepts an optional predicate. Learn more ➜
Read more about stream completion ➜
Question: Do ❚ take(1)
and ❚ first()
return the same stream of events?
Answer: Clearly, they return the same stream of events when the input stream emits at least one event. But the results may be different if the input stream emits no value before its completion (I'll detail such edge cases in a future article).
❚ last
(seen in Episode 10) is the counterpart of ❚ first
:
Question: Are ❚ last
and ❚ first
outputs identical when the input stream emits only one value?
Answer: Not when the input stream emits only one value and completes later or never completes. ❚ first
and ❚ last
are not strictly "symmetrical". Remember that ❚ last
has to wait for the ◉ complete
notification (read more about stream completion).
Given a stream of numbers, return a stream that emits only the first even number and completes immediately. For example, given the stream 1 1 1 0 1 0 0 1
, emit only the first 0
.
And what about emitting the last even number?