|
1 | | -# async-iterable-queue [![License][license-image]][license-url] [![Dependency][depencency-image]][dependency-url] [![Travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] |
| 1 | +# async-iterable-queue [![License][license-image]][license-url] [![Dependency][depencency-image]][dependency-url] [![GitHub][github-test-image]][github-url] [![Travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] |
2 | 2 |
|
3 | | -[![maintenance][maintenance-image]][npmsio-url] [![quality][quality-image]][npmsio-url] |
| 3 | +[![coverage][nyc-cov-image]][github-url] [![maintenance][maintenance-image]][npmsio-url] [![quality][quality-image]][npmsio-url] |
4 | 4 |
|
5 | | -Async Iterable Queue |
| 5 | +`async-iterable-queue` - A library for 'Queue' class which implements AsyncIterable\<T\> works on [Node.js](https://nodejs.org/) |
| 6 | + |
| 7 | +## Installation |
| 8 | + |
| 9 | +```shell |
| 10 | +npm i async-iterable-queue |
| 11 | +``` |
| 12 | + |
| 13 | +## Usage |
| 14 | + |
| 15 | +```typescript |
| 16 | +import { AsyncIterableQueue } from 'async-iterable-queue' |
| 17 | + |
| 18 | +type Foo = { |
| 19 | + id: number |
| 20 | + name: string |
| 21 | +} |
| 22 | + |
| 23 | +async function example1(queue: AsyncIterableQueue<Foo>): Promise<void> { |
| 24 | + console.debug('pushing 123') |
| 25 | + await queue.push({ |
| 26 | + id: 123, |
| 27 | + name: 'foo', |
| 28 | + }) |
| 29 | + console.debug('123 has been pushed') |
| 30 | + await queue.push({ |
| 31 | + id: 456, |
| 32 | + name: 'bar', |
| 33 | + }) |
| 34 | + console.debug('456 has been pushed') |
| 35 | + await queue.push({ |
| 36 | + id: 789, |
| 37 | + name: 'baz', |
| 38 | + }) |
| 39 | + console.debug('789 has been pushed') |
| 40 | + await queue.end() |
| 41 | + console.debug('\'end\' has been pushed') |
| 42 | +} |
| 43 | + |
| 44 | +async function example2(queue: AsyncIterableQueue<Foo>): Promise<void> { |
| 45 | + for await (const value of queue) |
| 46 | + console.debug(value) |
| 47 | + console.debug('all elements have been popped from queue') |
| 48 | +} |
| 49 | + |
| 50 | +async function example(): Promise<void> { |
| 51 | + console.debug('example for AsyncIterableQueue has begun') |
| 52 | + const queue = new AsyncIterableQueue<Foo>() |
| 53 | + await Promise.all([ |
| 54 | + example1(queue), |
| 55 | + example2(queue), |
| 56 | + ]) |
| 57 | + console.debug('example for AsyncIterableQueue has finished') |
| 58 | +} |
| 59 | + |
| 60 | +example() |
| 61 | +``` |
6 | 62 |
|
7 | 63 | [depencency-image]:https://img.shields.io/librariesio/release/npm/async-iterable-queue?logo=nodedotjs |
8 | 64 | [dependency-url]:https://npmjs.com/package/async-iterable-queue?activeTab=dependencies |
| 65 | +[github-test-image]:https://img.shields.io/github/workflow/status/kei-g/async-iterable-queue/test/main?label=build%20%26%20test&logo=github |
| 66 | +[github-url]:https://github.com/kei-g/async-iterable-queue |
9 | 67 | [license-image]:https://img.shields.io/github/license/kei-g/async-iterable-queue |
10 | 68 | [license-url]:https://opensource.org/licenses/BSD-3-Clause |
11 | 69 | [maintenance-image]:https://img.shields.io/npms-io/maintenance-score/async-iterable-queue?logo=npm |
12 | 70 | [npm-image]:https://img.shields.io/npm/v/async-iterable-queue.svg?logo=npm |
13 | 71 | [npm-url]:https://npmjs.org/package/async-iterable-queue |
14 | 72 | [npmsio-url]:https://npms.io/search?q=async-iterable-queue |
| 73 | +[nyc-cov-image]:https://img.shields.io/nycrc/kei-g/async-iterable-queue?config=.nycrc.json&label=coverage |
15 | 74 | [quality-image]:https://img.shields.io/npms-io/quality-score/async-iterable-queue?logo=npm |
16 | | -[travis-image]:https://img.shields.io/travis/kei-g/async-iterable-queue/main.svg?logo=travis |
17 | | -[travis-url]:https://travis-ci.org/kei-g/async-iterable-queue |
| 75 | +[travis-image]:https://img.shields.io/travis/com/kei-g/async-iterable-queue/main?label=build%20%26%20test&logo=travis |
| 76 | +[travis-url]:https://app.travis-ci.com/kei-g/async-iterable-queue |
0 commit comments