JS channels implementation... for async fun.
WIP
npm install --save channel-async
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]'
- 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.
Closes the channel, further send actions will return promises that reject. This is a utility
method equivalent to call channel.queue(null)
.
- value (
mixed
) - the value to pass into the channel (ornull
to close it).
The size
property returns the total number of send actions that are pending in the internal buffer of the channel.
Returns the capacity
of the channel that was set at instantiation.
Returns a boolean
indicating whether or not the channel is open - ie. has not been closed using channel.close()
or channel.queue(null)
.
- channel (
object
) - aChannel
instance. - value (
mixed
) - the value to pass into the channel (ornull
to close it).
- channel (
object
) - aChannel
instance.
- channel (
object
) - aChannel
instance.
- 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.
• MIT © axdg ([email protected]), 2107 •