UNPKG

@squirrel-forge/ui-util

Version:

A collection of utilities, classes, functions and abstracts made for the browser and babel compatible.

31 lines (29 loc) 967 B
/** * Poll for condition * @param {Function} check - Checker * @param {Function} success - Success callback * @param {number} interval - Interval time * @param {number} timeout - Timeout time * @param {null|Function} failed - Timeout callback * @return {Function} - Abort/complete function */ export function poll( check, success, { interval = 50, timeout = 60000, failed = null } = {} ) { const state = { interval : null, count : 0, limit : timeout ? Math.ceil( timeout / interval ) : 0 }; /** * Complete callback * @return {void} */ const complete = () => { window.clearInterval( state.interval ); }; state.interval = window.setInterval( () => { if ( check( state.count ) ) { complete(); success(); } if ( state.limit && state.count >= state.limit ) { complete(); if ( failed ) failed(); } state.count++; } ); return complete; }