-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(auditTime): add higher-order lettable version of auditTime
- Loading branch information
Showing
3 changed files
with
55 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import { async } from '../scheduler/async'; | ||
import { IScheduler } from '../Scheduler'; | ||
import { audit } from './audit'; | ||
import { timer } from '../observable/timer'; | ||
import { MonoTypeOperatorFunction } from '../interfaces'; | ||
|
||
/** | ||
* Ignores source values for `duration` milliseconds, then emits the most recent | ||
* value from the source Observable, then repeats this process. | ||
* | ||
* <span class="informal">When it sees a source values, it ignores that plus | ||
* the next ones for `duration` milliseconds, and then it emits the most recent | ||
* value from the source.</span> | ||
* | ||
* <img src="./img/auditTime.png" width="100%"> | ||
* | ||
* `auditTime` is similar to `throttleTime`, but emits the last value from the | ||
* silenced time window, instead of the first value. `auditTime` emits the most | ||
* recent value from the source Observable on the output Observable as soon as | ||
* its internal timer becomes disabled, and ignores source values while the | ||
* timer is enabled. Initially, the timer is disabled. As soon as the first | ||
* source value arrives, the timer is enabled. After `duration` milliseconds (or | ||
* the time unit determined internally by the optional `scheduler`) has passed, | ||
* the timer is disabled, then the most recent source value is emitted on the | ||
* output Observable, and this process repeats for the next source value. | ||
* Optionally takes a {@link IScheduler} for managing timers. | ||
* | ||
* @example <caption>Emit clicks at a rate of at most one click per second</caption> | ||
* var clicks = Rx.Observable.fromEvent(document, 'click'); | ||
* var result = clicks.auditTime(1000); | ||
* result.subscribe(x => console.log(x)); | ||
* | ||
* @see {@link audit} | ||
* @see {@link debounceTime} | ||
* @see {@link delay} | ||
* @see {@link sampleTime} | ||
* @see {@link throttleTime} | ||
* | ||
* @param {number} duration Time to wait before emitting the most recent source | ||
* value, measured in milliseconds or the time unit determined internally | ||
* by the optional `scheduler`. | ||
* @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for | ||
* managing the timers that handle the rate-limiting behavior. | ||
* @return {Observable<T>} An Observable that performs rate-limiting of | ||
* emissions from the source Observable. | ||
* @method auditTime | ||
* @owner Observable | ||
*/ | ||
export function auditTime<T>(duration: number, scheduler: IScheduler = async): MonoTypeOperatorFunction<T> { | ||
return audit(() => timer(duration, scheduler)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters