Skip to content

Instantly share code, notes, and snippets.

@aereal
Created December 2, 2015 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aereal/013dc5769833704bccff to your computer and use it in GitHub Desktop.
Save aereal/013dc5769833704bccff to your computer and use it in GitHub Desktop.
function aggregate<T>(f: (ts: T[]) => void, wait: number): (t: T) => void {
let lastFiredAt = new Date();
let stack: T[] = [];
return (t: T): void => {
stack.push(t);
const calledAt = new Date();
const elapsed = calledAt.getTime() - lastFiredAt.getTime();
if (elapsed >= wait) {
f(stack);
stack = [];
lastFiredAt = calledAt;
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment