Add an error handler parameter to intervals
This commit is contained in:
parent
1f5dfd71d5
commit
065570ebf5
@ -1,14 +1,18 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
export const intervalUtils = {
|
export const intervalUtils = {
|
||||||
setAsyncExcludingInterval(fn: () => Promise<void>, intervalMs: number) {
|
setAsyncExcludingInterval(fn: () => Promise<void>, intervalMs: number, onError: (err: Error) => void) {
|
||||||
let locked = false;
|
let locked = false;
|
||||||
const intervalId = setInterval(async () => {
|
const intervalId = setInterval(async () => {
|
||||||
if (locked) {
|
if (locked) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
locked = true;
|
locked = true;
|
||||||
await fn();
|
try {
|
||||||
|
await fn();
|
||||||
|
} catch (err) {
|
||||||
|
onError(err);
|
||||||
|
}
|
||||||
locked = false;
|
locked = false;
|
||||||
}
|
}
|
||||||
}, intervalMs);
|
}, intervalMs);
|
||||||
@ -17,4 +21,17 @@ export const intervalUtils = {
|
|||||||
clearAsyncExcludingInterval(intervalId: NodeJS.Timer): void {
|
clearAsyncExcludingInterval(intervalId: NodeJS.Timer): void {
|
||||||
clearInterval(intervalId);
|
clearInterval(intervalId);
|
||||||
},
|
},
|
||||||
|
setInterval(fn: () => void, intervalMs: number, onError: (err: Error) => void) {
|
||||||
|
const intervalId = setInterval(() => {
|
||||||
|
try {
|
||||||
|
fn();
|
||||||
|
} catch (err) {
|
||||||
|
onError(err);
|
||||||
|
}
|
||||||
|
}, intervalMs);
|
||||||
|
return intervalId;
|
||||||
|
},
|
||||||
|
clearInterval(intervalId: NodeJS.Timer): void {
|
||||||
|
clearInterval(intervalId);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user