diff --git a/index.async-storage.ts b/index.async-storage.ts index 354d325..ae34b39 100644 --- a/index.async-storage.ts +++ b/index.async-storage.ts @@ -33,6 +33,9 @@ interface Queue { size(): number } +// this just saves a few bytes +let Promize = Promise + /** * Creates a new queue with the specified concurrency level. * @@ -46,7 +49,6 @@ export let newQueue = (concurrency: number): Queue => { let tail: Node> | undefined | null let resolveDonePromise: (value: void | PromiseLike) => void let donePromise: Promise | void - let Promize = Promise let afterRun = () => { active-- @@ -70,17 +72,21 @@ export let newQueue = (concurrency: number): Queue => { } return { - add: (p: () => PromiseLike) => - new Promize((res, rej) => { - let node = { p: AsyncResource.bind(p), res, rej } - if (head) { - tail = tail!.next = node - } else { - tail = head = node - } - size++ - run() - }), + add(p: () => PromiseLike) { + let node = { p: AsyncResource.bind(p) } as unknown as Node> + let promise = new Promize((res, rej) => { + node.res = res + node.rej = rej + }) + if (head) { + tail = tail!.next = node + } else { + tail = head = node + } + size++ + run() + return promise as Promise + }, done: () => { if (!size) { return Promize.resolve() diff --git a/index.ts b/index.ts index c62464e..1859e24 100644 --- a/index.ts +++ b/index.ts @@ -24,6 +24,9 @@ interface Queue { size(): number } +// this just saves a few bytes +let Promize = Promise + /** * Creates a new queue with the specified concurrency level. * @@ -37,7 +40,6 @@ export let newQueue = (concurrency: number): Queue => { let tail: Node> | undefined | null let resolveDonePromise: (value: void | PromiseLike) => void let donePromise: Promise | void - let Promize = Promise let afterRun = () => { active-- @@ -61,17 +63,21 @@ export let newQueue = (concurrency: number): Queue => { } return { - add: (p: () => PromiseLike) => - new Promize((res, rej) => { - let node = { p, res, rej } - if (head) { - tail = tail!.next = node - } else { - tail = head = node - } - size++ - run() - }), + add(p: () => PromiseLike) { + let node = { p } as Node> + let promise = new Promize((res, rej) => { + node.res = res + node.rej = rej + }) + if (head) { + tail = tail!.next = node + } else { + tail = head = node + } + size++ + run() + return promise as Promise + }, done: () => { if (!size) { return Promize.resolve()