Skip to content

Instantly share code, notes, and snippets.

@krabello
Created October 12, 2015 13:43
Show Gist options
  • Save krabello/550e4030178e4108b804 to your computer and use it in GitHub Desktop.
Save krabello/550e4030178e4108b804 to your computer and use it in GitHub Desktop.
Poll function if the event doesn't exist, you need to check for desired state at intervals
function poll(fn, callback, errback, timeout, interval) {
var endTime = Number(new Date()) + (timeout || 2000);
interval = interval || 100;
(function p() {
// If the condition is met, we're done!
if(fn()) {
callback();
}
// If the condition isn't met but the timeout hasn't elapsed, go again
else if (Number(new Date()) < endTime) {
setTimeout(p, interval);
}
// Didn't match and too much time, reject!
else {
errback(new Error('timed out for ' + fn + ': ' + arguments));
}
})();
}
// Usage: ensure element is visible
poll(
function() {
return document.getElementById('lightbox').offsetWidth > 0;
},
function() {
// Done, success callback
},
function() {
// Error, failure callback
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment