take
signature: take(count: number): Observable
take(count: number): ObservableEmit provided number of values before completing.
Why use take?
take?When you are interested in only the first emission, you want to use take. Maybe you want to see what the user first clicked on when they entered the page, or you would want to subscribe to the click event and just take the first emission. Another use-case is when you need to take a snapshot of data at a particular point in time but do not require further emissions. For example, a stream of user token updates, or a route guard based on a stream in an Angular application.
💡 If you want to take a variable number of values based on some logic, or another observable, you can use takeUntil or takeWhile!
💡 take is the opposite of skip where take will take the first n number of emissions while skip will skip the first n number of emissions.
Examples
Example 1: Take 1 value from source
( StackBlitz | jsBin | jsFiddle )
// RxJS v6+
import { of } from 'rxjs';
import { take } from 'rxjs/operators';
//emit 1,2,3,4,5
const source = of(1, 2, 3, 4, 5);
//take the first emitted value then complete
const example = source.pipe(take(1));
//output: 1
const subscribe = example.subscribe(val => console.log(val));Example 2: Take the first 5 values from source
( StackBlitz | jsBin | jsFiddle )
Example 3: Taking first click location
(StackBlitz | jsFiddle)
Related Recipes
Additional Resources
take 📰 - Official docs
take - In Depth Dev Reference
Filtering operator: take, first, skip 🎥 💵 - André Staltz
Build your own take operator 🎥 - Kwinten Pisman
📁 Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/take.ts
Last updated