promise-channel

2.0.1 • Public • Published

promise-channel

Like Go Channels, but using JavaScript Promises.

Supports async-await and async-iteration.

npm install --save promise-channel

Example

This should look pretty familiar if you've used goroutines with go channels;

import Channel from "promise-channel";
 
var channel = new Channel();
 
channel.onClose.then(function(){
    console.log("Closed");
});
 
Promise.all([
    alice(channel),
    bob(channel),
]).then(function() {
    channel.close();
}).catch(function (e) {
    console.error(e.stack);
});
 
async function alice(channel) {
    var name = await channel.read();
    await channel.write("Hello, " + name);
}
 
async function bob(channel) {
    await channel.write("World");
    var greeting = await channel.read();
 
    console.log(greeting);
}

API

Channel

The module exports the Channel class which should be intstantiated with new

channel.read()

Attempts to read from the channel. Will throw if the channel is closed.

return

A promise which resolves to whatever value is written to the channel next.

channel.write(value)

Writes data to the channel. Will throw if the channel is closed.

arguments

  • value : The value to write to the channel

return

A promise which resolves once something has read from the channel.

channel.close(reason)

Closes the channel so that all pending and subsequent reads/writes will be rejected.

arguments

  • reason : An optional reason for closing the channel, will be passed to the onClose promise

channel.open

Boolean property which tells you whether the channel is currently open

channel.onClose

Read-only promise that resolves once the channel is closed

Readme

Keywords

Package Sidebar

Install

npm i promise-channel

Weekly Downloads

166

Version

2.0.1

License

ISC

Last publish

Collaborators

  • rangermauve