UNPKG

d4c-queue

Version:

A task queue executes tasks sequentially or concurrently. Wrap an async/promise-returning/sync function as a queue-ready async function for easy reusing. Support passing arguments/getting return value, @synchronized/@concurrent decorator, Node.js/Browser.

49 lines 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Queue = void 0; class Node { constructor(data) { this.data = data; this.next = null; this.prev = null; } } class Queue { constructor() { this.head = null; this.tail = null; this.length = 0; } push(data) { const node = new Node(data); if (this.tail) { this.tail.next = node; node.prev = this.tail; this.tail = node; } else { this.head = node; this.tail = node; } this.length += 1; return; } shift() { if (this.length > 0) { this.length -= 1; const node = this.head; if (node.next) { this.head = node.next; this.head.prev = null; } else { this.head = null; this.tail = null; } return node.data; } return undefined; } } exports.Queue = Queue; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL1F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSTtJQUdSLFlBQW1CLElBQU87UUFBUCxTQUFJLEdBQUosSUFBSSxDQUFHO1FBRm5CLFNBQUksR0FBbUIsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBbUIsSUFBSSxDQUFDO0lBRW5DLENBQUM7Q0FDRjtBQUVELE1BQWEsS0FBSztJQUFsQjtRQUNVLFNBQUksR0FBbUIsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBbUIsSUFBSSxDQUFDO1FBQzdCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUErQnBCLENBQUM7SUE3QlEsSUFBSSxDQUFDLElBQU87UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNqQixPQUFNO0lBQ1IsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWxDRCxzQkFrQ0MifQ==