take
and skip
operators are used to limit the number of values emitted from the source observable.
take operator
take
operator returns the observable which will limit the number of values emitted and receive the first n number of values. It will take a count argument representing the max number of values expecting to be received. Usually it is being used by passing 1 as count argument, to take only the first value emitted from an observable.
After receiving the n number of values, it will complete the observable, so any more values emitted after the first one will be ignored (or not received).
Lets see this example:
const sourceObservable = of(1, 2, 3, 4, 5); const wrapperObserable = sourceObservable.pipe(take(1)); const subscribe = wrapperObserable.subscribe(val => console.log('Received Value: ' + val));
The output will be:
Received Value: 1
Here, we created a source observable which will emit values 1,2,3,4,5. Then we used the take operator with count argument as 1, and the wrapper observable will be able to emit only 1 value, hence the subscription will receive 1 value.
Lets change the count argument to 3:
const wrapperObserable = sourceObservable.pipe(take(1)); const subscribe = wrapperObserable.subscribe(val => console.log('Received Value: ' + val));
This time, the output will be:
Received Value: 1 Received Value: 2 Received Value: 3
Note that, we are not making any changes to the source observable, but we changed the count argument to the take
operator to receive the desired number of values.
skip operator
skip
operator also returns the observable which will limit the number of values emitted, but it works in opposite to the take operator. It will ignore the first n number of vaues and receive all of the remaining values. It will take a count argument representing the max number of values expecting to be skipped.
Lets see this example:
const sourceObservable = of(1, 2, 3, 4, 5); const wrapperObserable = sourceObservable.pipe(skip(1)); const subscribe = wrapperObserable.subscribe(val => console.log('Received Value: ' + val));
The output will be:
Received Value: 2 Received Value: 3 Received Value: 4 Received Value: 5
Here, we created a source observable which will emit values 1,2,3,4,5. Then we used the skip operator with count argument as 1, and the wrapper observable will be able to skip 1 value, and the subscription will receive remaining all values 2,3,4,5.
Lets change the count argument to 3:
const wrapperObserable = sourceObservable.pipe(skip(1)); const subscribe = wrapperObserable.subscribe(val => console.log('Received Value: ' + val));
This time, the output will be:
Received Value: 4 Received Value: 5
References:
No comments:
Post a Comment