export type Timer = () => number; /** * Returns a function that can be invoked to end * the timer and duration. */ export const createTimer = (): Timer => { const startTime = Date.now(); return (): number => { const endTime = Date.now(); return endTime - startTime; }; }; /** * Determine if a given timer took longer than a given threshold in milliseconds. */ export const tookLongerThan = (timer: Timer, threshold: number): boolean => { return timer() > threshold; }; /** * Determine if a given timer took less than a given threshold in milliseconds. */ export const tookShorterThan = (timer: Timer, threshold: number): boolean => { return timer() < threshold; }; export const sleep = (ms: number) => { return new Promise(resolve => setTimeout(resolve, ms)); }