diff options
author | Sam Wilkins <samwilkins333@gmail.com> | 2019-09-14 03:05:37 -0400 |
---|---|---|
committer | Sam Wilkins <samwilkins333@gmail.com> | 2019-09-14 03:05:37 -0400 |
commit | 57d6b3da9a918e90d6472c11bac01166e4020185 (patch) | |
tree | ffc62f1a1cec309f78bad504a362b3663dbd9e65 /src/client/util/UtilExtensions.ts | |
parent | fc81c0f8ab727ad959eb6b416aff9c190e306adb (diff) |
fixed batching
Diffstat (limited to 'src/client/util/UtilExtensions.ts')
-rw-r--r-- | src/client/util/UtilExtensions.ts | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/src/client/util/UtilExtensions.ts b/src/client/util/UtilExtensions.ts index 3eeec6ca7..eca10c3b1 100644 --- a/src/client/util/UtilExtensions.ts +++ b/src/client/util/UtilExtensions.ts @@ -52,20 +52,22 @@ module.exports.ExecuteInBatchesAtInterval = async function <I>(batchSize: number return; } const batches = this.batch(batchSize); - return new Promise<void>(resolve => { + return new Promise<void>(async resolve => { const iterator = batches[Symbol.iterator](); let completed = 0; - const tag = setInterval(async () => { + while (true) { const next = iterator.next(); - if (next.done) { - clearInterval(tag); - } else { - await handler(next.value); - if (++completed === batches.length) { + await new Promise<void>(resolve => { + setTimeout(async () => { + await handler(next.value); resolve(); - } + }, interval * 1000); + }); + if (++completed === batches.length) { + break; } - }, interval * 1000); + } + resolve(); }); }; @@ -75,19 +77,21 @@ module.exports.ConvertInBatchesAtInterval = async function <I, O>(batchSize: num } let collector: O[] = []; const batches = this.batch(batchSize); - return new Promise<O[]>(resolve => { + return new Promise<O[]>(async resolve => { const iterator = batches[Symbol.iterator](); let completed = 0; - const tag = setInterval(async () => { + while (true) { const next = iterator.next(); - if (next.done) { - clearInterval(tag); - } else { - collector.push(...(await handler(next.value))); - if (++completed === batches.length) { - resolve(collector); - } + await new Promise<void>(resolve => { + setTimeout(async () => { + collector.push(...(await handler(next.value))); + resolve(); + }, interval * 1000); + }); + if (++completed === batches.length) { + resolve(collector); + break; } - }, interval * 1000); + } }); };
\ No newline at end of file |