Wait until the executed promise resolved to a true value, Execute it every x milliseconds and stop after y milliseconds.
npm install poll-until-promise
const { waitFor } = require('poll-until-promise');
waitFor(() => fetch('/get-data'), { interval: 100 })
// Tries every 100ms (from the last failure)
.then(value => console.log('Yey', value))
.catch(err => console.error(err));
const { waitFor } = require('poll-until-promise');
waitFor(() => {
if (Math.random() >= 0.5) {
throw new Error('try again');
} else {
console.log('all good')
}
})
.then(() => console.log('Yey'))
.catch(err => console.error(err));
const { PollUntil } = require('poll-until-promise');
const later = Date.now() + 1000; // 1 seconds into the future
let pollUntilPromise = new PollUntil();
pollUntilPromise
.stopAfter(2 * 1000) // Stop trying after 2 seconds
.tryEvery(100) // Tries every 100ms (from the last failure)
.execute(() => {
return new Promise((resolve, reject) => {
if (+Date.now() >= later) {
return resolve(true); // Some truthy value
}
reject(false);
})
})
.then(value => console.log('Yey', value))
.catch(err => console.error(err));
const options = {
interval: 100,
timeout: 1000,
stopOnFailure: false, // Ignores promise rejections
verbose: false,
message: 'Waiting for time to pass :)', // custom message to display on failure
};
let pollUntilPromise = new PollUntil(options);
- isResolved
pollUntilPromise.isResolved()
- isWaiting
pollUntilPromise.isWaiting()
- getPromise
pollUntilPromise.getPromise().then(() => console.log('OMG'))
const PollUntil = require('poll-until-promise');
const later = Date.now() + 1000; // 1 seconds into the future
let pollUntilPromise = new PollUntil();
pollUntilPromise
.stopAfter(2 * 1000)
.tryEvery(100)
.execute(() => {
if (+Date.now() >= later) {
return true;
}
return false;
})
.then((value) => console.log('Yey', value))
.catch((err) => console.error(err));
An AngularJs compatible library based on poll-until-promise
angular-wait-until.