Skip to content

Commit

Permalink
Untrack job actions
Browse files Browse the repository at this point in the history
  • Loading branch information
Exelord committed Feb 6, 2023
1 parent 12b52ca commit 700bd70
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions src/job.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getOwner, onCleanup } from "solid-js";
import { getOwner, onCleanup, untrack } from "solid-js";
import { createObject } from "solid-proxies";
import { createTask, Task } from "./task";

Expand Down Expand Up @@ -83,32 +83,32 @@ export class Job<T, Args extends unknown[]> {
}

perform(...args: Args): Task<T> {
const task = createTask((signal) => this.#taskFn(signal, ...args));

this.#instrumentTask(task);
this.#reactiveState.performCount++;

if (this.lastPending) {
if (this.#options.mode === JobMode.Drop) {
task.abort();
return task;
}

if (this.#options.mode === JobMode.Restart) {
this.lastPending.abort();
return untrack(() => {
const task = createTask((signal) => this.#taskFn(signal, ...args));
this.#instrumentTask(task);
this.#reactiveState.performCount++;

if (this.lastPending) {
if (this.#options.mode === JobMode.Drop) {
task.abort();
return task;
}

if (this.#options.mode === JobMode.Restart) {
this.lastPending.abort();
}
}
}

task.perform();

this.#reactiveState.lastPending = task;
this.#reactiveState.status = JobStatus.Pending;
task.perform();

return task;
this.#reactiveState.lastPending = task;
this.#reactiveState.status = JobStatus.Pending;
return task;
});
}

async abort(reason?: string): Promise<void> {
return this.lastPending?.abort(reason);
return untrack(() => this.lastPending?.abort(reason));
}

#instrumentTask(task: Task<T>): void {
Expand Down

0 comments on commit 700bd70

Please sign in to comment.