Socket
Socket
Sign inDemoInstall

@async-generators/subject

Package Overview
Dependencies
2
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @async-generators/subject

push items to pulling iterators


Version published
Weekly downloads
585
decreased by-12.43%
Maintainers
1
Install size
79.5 kB
Created
Weekly downloads
 

Readme

Source

subject

logo

push items to pulling iterators

NPM version Travis Status Travis Status

Install

npm install @async-generators/subject --save
yarn add @async-generators/subject

This package's main entry points to a commonjs dist. The module entry points to a es2015 module dist. Both require native async-generator support, or be down-compiled with a webpack loader.

Api

Soupler()

Subject that provides three methods: next(item), error(err), and done() to push data and events. When [Symbol.asyncIterator] is called an internal subscription is created. pushed items are buffered (per iterator) until they are pulled by the consuming iterator. If the consuming iterator pulls items slower than the speed they are pushed to the subject, then the internal buffer will continue to grow in size. error(err) will cause the iterator to rethrow the given error to the consumer and dispose of the subject.

Example

example.js

const {Subject} = require('@async-generators/subject');

let subject = new Subject<number>();

async function* source(){
  yield 1; yield 2; yield 3; yield 4;
}

async function main() {
  let reader = async function () {
    for await (let item of subject) {
      console.log("PULL:", item);
    }
  };

  let readers = [reader(), reader()];
  
  let writer = async function () {
    for await (let item of source()){
      console.log("PUSH:", item);
      subject.next(item);
    }
    subject.done();
  }

  await writer();
  await Promise.all(readers);
}

main().catch(console.log);

Execute with the latest node.js 9:

node --harmony example.js

output:

PUSH: 1
PUSH: 2
PULL: 1
PULL: 1
PUSH: 3
PULL: 2
PULL: 2
PUSH: 4
PULL: 3
PULL: 3
PULL: 4
PULL: 4

Typescript

This library is fully typed and can be imported using:

import {Subject} from '@async-generators/subject');

It is also possible to directly execute your properly configured typescript with ts-node:

ts-node --harmony foo.ts

Keywords

FAQs

Last updated on 17 Jan 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc