console
const { from, defer, interval } = rxjs;
const { take, mergeAll, retry, delay, retryWhen } = rxjs.operators;
function remove(path) {
return new Promise((resolve, reject) => {
console.log('remove'+ path);
const willSuccess = Math.random() > 0.5;
willSuccess && resolve(path) || reject(path);
})
}
const fileList = 'abcdefg'.split('');
function cleanFiles(arr) {
const obserbales = arr.map(v => defer(() => remove(v)).pipe(
retryWhen(errors => errors.pipe(delay(1000),take(3)))
));
return from(obserbales).pipe(
mergeAll()
);
}
cleanFiles(fileList).subscribe(console.log, console.error);
<h3>rxjs promise重试</h3>
<quate>
<a targe="_blank" href="https://stackoverflow.com/questions/44979131/rxjs-retry-with-delay-function">参考文档</a>
</quate>