|
@@ -4,7 +4,7 @@
|
|
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
|
*/
|
|
|
|
|
|
-import { Task, Run, Progress, Scheduler, now, MultistepTask, ChunkedSubtask } from 'mol-task'
|
|
|
+import { Task, Run, Progress, Scheduler, now, MultistepTask, chunkedSubtask } from 'mol-task'
|
|
|
|
|
|
export async function test1() {
|
|
|
const t = Task.create('test', async () => 1);
|
|
@@ -65,7 +65,9 @@ export function testTree() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-export const chunk = ChunkedSubtask(25, (n, state: { i: number, current: number, total: number }) => {
|
|
|
+export type ChunkedState = { i: number, current: number, total: number }
|
|
|
+
|
|
|
+function processChunk(n: number, state: ChunkedState): number {
|
|
|
const toProcess = Math.min(state.current + n, state.total);
|
|
|
const start = state.current;
|
|
|
for (let i = start; i < toProcess; i++) {
|
|
@@ -76,20 +78,20 @@ export const chunk = ChunkedSubtask(25, (n, state: { i: number, current: number,
|
|
|
}
|
|
|
state.current = toProcess;
|
|
|
return toProcess - start;
|
|
|
-}, (ctx, s, p) => ctx.update('chunk test ' + p));
|
|
|
+}
|
|
|
|
|
|
export const ms = MultistepTask('ms-task', ['step 1', 'step 2', 'step 3'], async (p: { i: number }, step, ctx) => {
|
|
|
await step(0);
|
|
|
|
|
|
const child = Task.create('chunked', async ctx => {
|
|
|
- const s = await chunk(ctx, { i: 0, current: 0, total: 125 });
|
|
|
+ const s = await chunkedSubtask(ctx, 25, { i: 0, current: 0, total: 125 }, processChunk, (ctx, s, p) => ctx.update('chunk test ' + p))
|
|
|
return s.i;
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
await ctx.runChild(child);
|
|
|
await Scheduler.delay(250);
|
|
|
await step(1);
|
|
|
- await chunk(ctx, { i: 0, current: 0, total: 80 });
|
|
|
+ await chunkedSubtask(ctx, 25, { i: 0, current: 0, total: 80 }, processChunk, (ctx, s, p) => ctx.update('chunk test ' + p))
|
|
|
await Scheduler.delay(250);
|
|
|
await step(2);
|
|
|
await Scheduler.delay(250);
|