Skip to content

Instantly share code, notes, and snippets.

@jfairbank
Created June 3, 2015 16:23
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jfairbank/9bb7da0e60eeac5b55fa to your computer and use it in GitHub Desktop.
Save jfairbank/9bb7da0e60eeac5b55fa to your computer and use it in GitHub Desktop.
poll promise
function poll(fn, timeout, interval) {
var endTime = Number(new Date()) + (timeout || 2000);
interval = interval || 100;
return new Promise(function(resolve, reject) {
(function p() {
// If the condition is met, we're done!
if (fn()) {
resolve();
}
// 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 {
reject('timed out for ' + fn + ': ' + arguments);
}
})();
});
}
poll(function() {
return document.getElementById('lightbox').offsetWidth > 0;
}).then(function() {
// Done
}).catch(function() {
// Fail
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment