You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.8 KiB

4 years ago
import { SchedulerLike, OperatorFunction } from '../types';
/**
*
* Emits an object containing the current value, and the time that has
* passed between emitting the current value and the previous value, which is
* calculated by using the provided `scheduler`'s `now()` method to retrieve
* the current time at each emission, then calculating the difference. The `scheduler`
* defaults to {@link asyncScheduler}, so by default, the `interval` will be in
* milliseconds.
*
* <span class="informal">Convert an Observable that emits items into one that
* emits indications of the amount of time elapsed between those emissions.</span>
*
* ![](timeinterval.png)
*
* ## Examples
* Emit inteval between current value with the last value
*
* ```ts
* const seconds = interval(1000);
*
* seconds.pipe(timeInterval())
* .subscribe(
* value => console.log(value),
* err => console.log(err),
* );
*
* seconds.pipe(timeout(900))
* .subscribe(
* value => console.log(value),
* err => console.log(err),
* );
*
* // NOTE: The values will never be this precise,
* // intervals created with `interval` or `setInterval`
* // are non-deterministic.
*
* // {value: 0, interval: 1000}
* // {value: 1, interval: 1000}
* // {value: 2, interval: 1000}
* ```
*
* @param {SchedulerLike} [scheduler] Scheduler used to get the current time.
* @return {Observable<{ interval: number, value: T }>} Observable that emit infomation about value and interval
* @method timeInterval
*/
export declare function timeInterval<T>(scheduler?: SchedulerLike): OperatorFunction<T, TimeInterval<T>>;
/**
* @deprecated exposed API, use as interface only.
*/
export declare class TimeInterval<T> {
value: T;
interval: number;
constructor(value: T, interval: number);
}