-
Notifications
You must be signed in to change notification settings - Fork 2
Progress capturing
DigitalBrainJS edited this page Oct 17, 2021
·
1 revision
Basic example (Live demo):
import CPromise from 'c-promise';
const delay= (ms, value)=>{
return new CPromise((resolve, reject, {onCancel}) => {
const timer = setTimeout(resolve, ms, value);
onCancel(() => {
clearTimeout(timer);
console.log('clear timeout');
}) // clear internal operations on 'cancel' event
})
}
const promise = CPromise.all([
delay(1000, 'a'),
delay(2000, 'b'),
delay(3000, 'c'),
delay(4000, 'd'),
delay(5000, 'e'),
])
.progress(value=> console.log(`Progress: ${(value * 100).toFixed(1)}%`));
console.log('isPromise:', promise instanceof Promise); // true
(async()=>{
try {
console.log(`Done: `, await promise);
}catch(err){
console.warn(`Failed: ${err}`);
console.log('isCanceled:', promise.isCanceled);
}
})()
setTimeout(()=> promise.cancel(), 3100); // cancel the promise after 3100ms
Console output:
isPromise: true
Progress: 20.0%
Progress: 40.0%
Progress: 60.0%
clear timeout
clear timeout
isCanceled: true
Failed: CanceledError: canceled
Process finished with exit code 0