Skip to content

Commit

Permalink
Remove utils
Browse files Browse the repository at this point in the history
  • Loading branch information
Exelord committed Jan 31, 2023
1 parent 40eabcb commit 56b6804
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 34 deletions.
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export * from "./job";
export * from "./work";
export * from "./task";
export * from "./work";
2 changes: 1 addition & 1 deletion src/job.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export class Job<T, Args extends unknown[]> {
}

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

this.#instrumentTask(task);
this.#reactiveState.performCount++;
Expand Down
4 changes: 2 additions & 2 deletions src/task.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createObject } from "solid-proxies";
import { cancellablePromise } from "./utils/promise";
import { work } from "./work";

export enum TaskStatus {
Idle = "idle",
Expand Down Expand Up @@ -161,7 +161,7 @@ export class Task<T> implements Promise<T> {
this.#abortController.signal.throwIfAborted();
this.#reactiveState.status = TaskStatus.Pending;

const value = await cancellablePromise(
const value = await work(
this.#abortController.signal,
this.#promiseFn(this.#abortController.signal)
);
Expand Down
23 changes: 0 additions & 23 deletions src/utils/promise.ts

This file was deleted.

22 changes: 15 additions & 7 deletions src/work.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import { cancellablePromise, timeoutPromise } from "./utils/promise";
export async function work<T>(signal: AbortSignal, promise: Promise<T>) {
signal.throwIfAborted();

export async function work<T>(
signal: AbortSignal,
promise: Promise<T>
): Promise<T> {
return cancellablePromise(signal, promise);
return Promise.race([
new Promise<never>((_resolve, reject) => {
signal.addEventListener(
"abort",
() => {
reject(signal.reason);
},
{ once: true, passive: true }
);
}),
promise,
]);
}

export async function timeout(signal: AbortSignal, ms: number): Promise<void> {
return work(signal, timeoutPromise(ms));
return work(signal, new Promise((resolve) => setTimeout(resolve, ms)));
}

0 comments on commit 56b6804

Please sign in to comment.