channel-async
v0.0.1
Published
JS channels implementation... for async fun
Downloads
3
Readme
Channel
JS channels implementation... for async fun.
About
WIP
Installation
npm install --save channel-async
Usage
const Channel = require('channel-async')
function sender(channel, data) {
const values = [...data]
let value
while (value = values.shift()) {
Channel.send(channel, value)
}
Channel.close(channel)
}
async function receiver(channel) {
const values = []
await Channel.range(channel, values.push)
return values
}
const channel = new Channel(1)
const data = [1, 2, 3, 4, 5]
sender(channel, data)
receiver(channel).then(data => console.log(data))
// => '[1, 2, 3, 4, 5]'
API
Channel([capacity])
- capacity (
number
) - the size of the channels internal buffer size.
A call to the Channel
constructor (new Channel
) returns a Channel
instance with the following methods and properties.
channel.close()
Closes the channel, further send actions will return promises that reject. This is a utility
method equivalent to call channel.queue(null)
.
channel.queue([value])
- value (
mixed
) - the value to pass into the channel (ornull
to close it).
channel.size
The size
property returns the total number of send actions that are pending in the internal buffer of the channel.
channel.capacity
Returns the capacity
of the channel that was set at instantiation.
channel.open
Returns a boolean
indicating whether or not the channel is open - ie. has not been closed using channel.close()
or channel.queue(null)
.
Channel.send(channel, value)
- channel (
object
) - aChannel
instance. - value (
mixed
) - the value to pass into the channel (ornull
to close it).
Channel.close(channel)
- channel (
object
) - aChannel
instance.
Channel.receive(channel)
- channel (
object
) - aChannel
instance.
Channel.range(channel, fn)
- channel (
object
) - aChannel
instance. - fn - (
function
) - a callback function that is passed each value as is received from the channel.Channel.range
will resolve when thechannel
is closed, or reject with an error is caught.
License
• MIT © axdg ([email protected]), 2107 •