Skip to content

Commit

Permalink
Make taskQueue() support pipelining
Browse files Browse the repository at this point in the history
  • Loading branch information
pjeby committed Jun 23, 2023
1 parent 1b392d0 commit d09236a
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/defer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ export const defer: (cb: () => any) => void = window.queueMicrotask ?? (p => (cb
* optional onfulfilled and onrejected callback. If no onrejected callback is supplied, `console.error`
* is used.
*/
export function taskQueue() {
let last = Promise.resolve();
return (onfulfilled?: (val: any) => void|PromiseLike<void>, onrejected?: (reason: any) => void|PromiseLike<void>) => {
export function taskQueue<T>(initalValue?: T) {
let last = Promise.resolve(initalValue) as Promise<T>;
return (onfulfilled?: (val: T) => T|PromiseLike<T>, onrejected?: (reason: any) => T|PromiseLike<T>) => {
if (onfulfilled || onrejected) {
if (typeof onrejected === "undefined") onrejected = console.error;
if (typeof onrejected === "undefined") onrejected = console.error as typeof onrejected;
return last = last.then(onfulfilled, onrejected);
}
return last;
Expand Down

0 comments on commit d09236a

Please sign in to comment.