# Operators

A complete list of RxJS operators with clear explanations, relevant resources, and executable examples.

[*Prefer a complete list in alphabetical order?*](https://www.learnrxjs.io/learn-rxjs/operators/complete)

### Contents (By Operator Type)

* [Combination](https://www.learnrxjs.io/learn-rxjs/operators/combination)
  * [combineLatestAll](https://www.learnrxjs.io/learn-rxjs/operators/combination/combineall)
  * [combineLatest](https://www.learnrxjs.io/learn-rxjs/operators/combination/combinelatest) ⭐
  * [concat](https://www.learnrxjs.io/learn-rxjs/operators/combination/concat) ⭐
  * [concatAll](https://www.learnrxjs.io/learn-rxjs/operators/combination/concatall)
  * [endWith](https://www.learnrxjs.io/learn-rxjs/operators/combination/endwith)
  * [forkJoin](https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin)
  * [merge](https://www.learnrxjs.io/learn-rxjs/operators/combination/merge) ⭐
  * [mergeAll](https://www.learnrxjs.io/learn-rxjs/operators/combination/mergeall)
  * [pairwise](https://www.learnrxjs.io/learn-rxjs/operators/combination/pairwise)
  * [race](https://www.learnrxjs.io/learn-rxjs/operators/combination/race)
  * [startWith](https://www.learnrxjs.io/learn-rxjs/operators/combination/startwith) ⭐
  * [withLatestFrom](https://www.learnrxjs.io/learn-rxjs/operators/combination/withlatestfrom) ⭐
  * [zip](https://www.learnrxjs.io/learn-rxjs/operators/combination/zip)
* [Conditional](https://www.learnrxjs.io/learn-rxjs/operators/conditional)
  * [defaultIfEmpty](https://www.learnrxjs.io/learn-rxjs/operators/conditional/defaultifempty)
  * [every](https://www.learnrxjs.io/learn-rxjs/operators/conditional/every)
  * [iif](https://www.learnrxjs.io/learn-rxjs/operators/conditional/iif)
  * [sequenceequal](https://www.learnrxjs.io/learn-rxjs/operators/conditional/sequenceequal)
* [Creation](https://www.learnrxjs.io/learn-rxjs/operators/creation)
  * [ajax](https://www.learnrxjs.io/learn-rxjs/operators/creation/ajax) ⭐
  * [create](https://www.learnrxjs.io/learn-rxjs/operators/creation/create)
  * [defer](https://www.learnrxjs.io/learn-rxjs/operators/creation/defer)
  * [empty](https://www.learnrxjs.io/learn-rxjs/operators/creation/empty)
  * [from](https://www.learnrxjs.io/learn-rxjs/operators/creation/from) ⭐
  * [fromEvent](https://www.learnrxjs.io/learn-rxjs/operators/creation/fromevent)
  * [generate](https://www.learnrxjs.io/learn-rxjs/operators/creation/generate)
  * [interval](https://www.learnrxjs.io/learn-rxjs/operators/creation/interval)
  * [of](https://www.learnrxjs.io/learn-rxjs/operators/creation/of) ⭐
  * [range](https://www.learnrxjs.io/learn-rxjs/operators/creation/range)
  * [throwError](https://www.learnrxjs.io/learn-rxjs/operators/creation/throw)
  * [timer](https://www.learnrxjs.io/learn-rxjs/operators/creation/timer)
* [Error Handling](https://www.learnrxjs.io/learn-rxjs/operators/error_handling)
  * [catch / catchError](https://www.learnrxjs.io/learn-rxjs/operators/error_handling/catch) ⭐
  * [retry](https://www.learnrxjs.io/learn-rxjs/operators/error_handling/retry)
  * [retryWhen](https://www.learnrxjs.io/learn-rxjs/operators/error_handling/retrywhen)
* [Filtering](https://www.learnrxjs.io/learn-rxjs/operators/filtering)
  * [audit](https://www.learnrxjs.io/learn-rxjs/operators/filtering/audit)
  * [auditTime](https://www.learnrxjs.io/learn-rxjs/operators/filtering/audittime)
  * [debounce](https://www.learnrxjs.io/learn-rxjs/operators/filtering/debounce)
  * [debounceTime](https://www.learnrxjs.io/learn-rxjs/operators/filtering/debouncetime) ⭐
  * [distinct](https://www.learnrxjs.io/learn-rxjs/operators/filtering/distinct)
  * [distinctUntilChanged](https://www.learnrxjs.io/learn-rxjs/operators/filtering/distinctuntilchanged) ⭐
  * [distinctUntilKeyChanged](https://www.learnrxjs.io/learn-rxjs/operators/filtering/distinctuntilkeychanged)
  * [filter](https://www.learnrxjs.io/learn-rxjs/operators/filtering/filter) ⭐
  * [find](https://www.learnrxjs.io/learn-rxjs/operators/filtering/find)
  * [first](https://www.learnrxjs.io/learn-rxjs/operators/filtering/first)
  * [ignoreElements](https://www.learnrxjs.io/learn-rxjs/operators/filtering/ignoreelements)
  * [last](https://www.learnrxjs.io/learn-rxjs/operators/filtering/last)
  * [sample](https://www.learnrxjs.io/learn-rxjs/operators/filtering/sample)
  * [single](https://www.learnrxjs.io/learn-rxjs/operators/filtering/single)
  * [skip](https://www.learnrxjs.io/learn-rxjs/operators/filtering/skip)
  * [skipUntil](https://www.learnrxjs.io/learn-rxjs/operators/filtering/skipuntil)
  * [skipWhile](https://www.learnrxjs.io/learn-rxjs/operators/filtering/skipwhile)
  * [take](https://www.learnrxjs.io/learn-rxjs/operators/filtering/take) ⭐
  * [takeLast](https://www.learnrxjs.io/learn-rxjs/operators/filtering/takelast)
  * [takeUntil](https://www.learnrxjs.io/learn-rxjs/operators/filtering/takeuntil) ⭐
  * [takeWhile](https://www.learnrxjs.io/learn-rxjs/operators/filtering/takewhile)
  * [throttle](https://www.learnrxjs.io/learn-rxjs/operators/filtering/throttle)
  * [throttleTime](https://www.learnrxjs.io/learn-rxjs/operators/filtering/throttletime)
* [Multicasting](https://www.learnrxjs.io/learn-rxjs/operators/multicasting)
  * [multicast](https://www.learnrxjs.io/learn-rxjs/operators/multicasting/multicast)
  * [publish](https://www.learnrxjs.io/learn-rxjs/operators/multicasting/publish)
  * [share](https://www.learnrxjs.io/learn-rxjs/operators/multicasting/share) ⭐
  * [shareReplay](https://www.learnrxjs.io/learn-rxjs/operators/multicasting/sharereplay) ⭐
* [Transformation](https://www.learnrxjs.io/learn-rxjs/operators/transformation)
  * [buffer](https://www.learnrxjs.io/learn-rxjs/operators/transformation/buffer)
  * [bufferCount](https://www.learnrxjs.io/learn-rxjs/operators/transformation/buffercount)
  * [bufferTime](https://www.learnrxjs.io/learn-rxjs/operators/transformation/buffertime) ⭐
  * [bufferToggle](https://www.learnrxjs.io/learn-rxjs/operators/transformation/buffertoggle)
  * [bufferWhen](https://www.learnrxjs.io/learn-rxjs/operators/transformation/bufferwhen)
  * [concatMap](https://www.learnrxjs.io/learn-rxjs/operators/transformation/concatmap) ⭐
  * [concatMapTo](https://www.learnrxjs.io/learn-rxjs/operators/transformation/concatmapto)
  * [expand](https://www.learnrxjs.io/learn-rxjs/operators/transformation/expand)
  * [exhaustMap](https://www.learnrxjs.io/learn-rxjs/operators/transformation/exhaustmap)
  * [groupBy](https://www.learnrxjs.io/learn-rxjs/operators/transformation/groupby)
  * [map](https://www.learnrxjs.io/learn-rxjs/operators/transformation/map) ⭐
  * [mapTo](https://www.learnrxjs.io/learn-rxjs/operators/transformation/mapto)
  * [mergeMap / flatMap](https://www.learnrxjs.io/learn-rxjs/operators/transformation/mergemap) ⭐
  * [mergeScan](https://www.learnrxjs.io/learn-rxjs/operators/transformation/mergescan)
  * [partition](https://www.learnrxjs.io/learn-rxjs/operators/transformation/partition)
  * [pluck](https://www.learnrxjs.io/learn-rxjs/operators/transformation/pluck)
  * [reduce](https://www.learnrxjs.io/learn-rxjs/operators/transformation/reduce)
  * [scan](https://www.learnrxjs.io/learn-rxjs/operators/transformation/scan) ⭐
  * [switchMap](https://www.learnrxjs.io/learn-rxjs/operators/transformation/switchmap) ⭐
  * [switchMapTo](https://www.learnrxjs.io/learn-rxjs/operators/transformation/switchmapto)
  * [toArray](https://www.learnrxjs.io/learn-rxjs/operators/transformation/toarray)
  * [window](https://www.learnrxjs.io/learn-rxjs/operators/transformation/window)
  * [windowCount](https://www.learnrxjs.io/learn-rxjs/operators/transformation/windowcount)
  * [windowTime](https://www.learnrxjs.io/learn-rxjs/operators/transformation/windowtime)
  * [windowToggle](https://www.learnrxjs.io/learn-rxjs/operators/transformation/windowtoggle)
  * [windowWhen](https://www.learnrxjs.io/learn-rxjs/operators/transformation/windowwhen)
* [Utility](https://www.learnrxjs.io/learn-rxjs/operators/utility)
  * [tap / do](https://www.learnrxjs.io/learn-rxjs/operators/utility/do) ⭐
  * [delay](https://www.learnrxjs.io/learn-rxjs/operators/utility/delay)
  * [delayWhen](https://www.learnrxjs.io/learn-rxjs/operators/utility/delaywhen)
  * [dematerialize](https://www.learnrxjs.io/learn-rxjs/operators/utility/dematerialize)
  * [finalize / finally](https://www.learnrxjs.io/learn-rxjs/operators/utility/finalize)
  * [let](https://www.learnrxjs.io/learn-rxjs/operators/utility/let)
  * [repeat](https://www.learnrxjs.io/learn-rxjs/operators/utility/repeat)
  * [repeatWhen](https://github.com/btroncone/learn-rxjs/blob/master/operators/utility/repeatwhen.md)
  * [timeInterval](https://www.learnrxjs.io/learn-rxjs/operators/utility/timeinterval)
  * [timeout](https://www.learnrxjs.io/learn-rxjs/operators/utility/timeout)
  * [timeoutWith](https://www.learnrxjs.io/learn-rxjs/operators/utility/timeoutwith)
  * [toPromise](https://www.learnrxjs.io/learn-rxjs/operators/utility/topromise)

⭐ - *commonly used*

### Additional Resources

* [What Are Operators?](http://reactivex.io/rxjs/manual/overview.html#operators) 📰 - Official Docs
* [What Operators Are](https://egghead.io/lessons/rxjs-what-rxjs-operators-are) 🎥 💵 - André Staltz
