86
*/
87
export function throttledObservable<T>(observable: IObservable<T>, throttleMs: number, debugLocation = DebugLocation.ofCaller()): IObservable<T> {
89
>
let lastValue: T | undefined;
90
>
91
>
let timeout: Timeout | undefined = undefined;
92
>
93
>
return observableFromEvent<T, void>(undefined, cb => {
94
>
const d = autorun(reader => {
95
>
const value = observable.read(reader);
96
>
97
>
if (!hasValue) {
98
>
hasValue = true;
99
>
lastValue = value;
100
>
} else if (!timeout) {
101
// Only start a timer if one isn't already running
102
timeout = setTimeout(() => {