Skip to content

Commit b5232f6

Browse files
committed
fix: refactor without using setInterval
1 parent f9966be commit b5232f6

File tree

1 file changed

+11
-21
lines changed

1 file changed

+11
-21
lines changed

src/killPsTree.ts

+11-21
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Logger } from './Logger';
22
import findProcess from 'find-process';
3+
import { setTimeout as delay } from 'node:timers/promises';
34
import pidTree from 'pidtree';
45

56
const log = Logger.child({
@@ -33,30 +34,19 @@ export const killPsTree = async (
3334
}, gracefulTimeout);
3435

3536
await Promise.all(
36-
hangingPids.map((pid) => {
37-
return new Promise((resolve) => {
38-
const interval = setInterval(async () => {
39-
if (hitTimeout) {
40-
clearInterval(interval);
37+
hangingPids.map(async (pid) => {
38+
// eslint-disable-next-line no-unmodified-loop-condition
39+
while (!hitTimeout) {
40+
const processes = await findProcess('pid', pid);
4141

42-
resolve(false);
42+
if (processes.length === 0) {
43+
hangingPids = hangingPids.filter((hangingPid) => hangingPid !== pid);
4344

44-
return;
45-
}
45+
break;
46+
}
4647

47-
const processes = await findProcess('pid', pid);
48-
49-
if (processes.length === 0) {
50-
hangingPids = hangingPids.filter(
51-
(hangingPid) => hangingPid !== pid,
52-
);
53-
54-
clearInterval(interval);
55-
56-
resolve(true);
57-
}
58-
}, 100);
59-
});
48+
await delay(100);
49+
}
6050
}),
6151
);
6252

0 commit comments

Comments
 (0)