X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fqueue.ts;h=d38296b2808b1bfcb1dd3793eb09c8089df5e4c9;hb=72695f86742c18357f42f000ce6488d545187133;hp=ead4b6375388398483eda10abaaae50e2c779928;hpb=64383951fbf11fdf6a804fc6d081635fb925e403;p=poolifier.git diff --git a/src/queue.ts b/src/queue.ts index ead4b637..d38296b2 100644 --- a/src/queue.ts +++ b/src/queue.ts @@ -1,7 +1,7 @@ -// Copyright Jerome Benoit. 2021-2023. All Rights Reserved. +// Copyright Jerome Benoit. 2022-2023. All Rights Reserved. /** - * Queue + * Queue. * * @typeParam T - Type of queue items. */ @@ -71,4 +71,32 @@ export class Queue { this.size = 0 this.maxSize = 0 } + + /** + * Returns an iterator for the queue. + * + * @returns An iterator for the queue. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols + */ + [Symbol.iterator] (): Iterator { + const items = this.items + let i = this.offset + + return { + next: () => { + if (i >= items.length) { + return { + value: undefined, + done: true + } + } + const value = items[i] + ++i + return { + value, + done: false + } + } + } + } }