// jshint esnext: true, loopfunc: true
|
|
var chan = require('..')
|
var co = require('co')
|
|
co(function *() {
|
var count = 10
|
, ch1
|
, ch2
|
|
while (count-- > 0) {
|
// macke new channels
|
ch1 = chan()
|
ch2 = chan()
|
|
// add a value on each channel after a random amout of time
|
setTimeout(function () { ch1('ch1') }, Math.random() * 100 | 0)
|
setTimeout(function () { ch2('ch2') }, Math.random() * 100 | 0)
|
|
// will block until there is data on either ch1 or ch2,
|
// and will return the channel with data
|
// if data is on both channels, a channel will be selected at random
|
switch (yield chan.select(ch1, ch2)) {
|
|
// channel 1 received data
|
case ch1:
|
// retrieve the message from the channel
|
console.log(yield ch1.selected)
|
break
|
|
// channel 2 received data
|
case ch2:
|
// retrieve the message from the channel
|
console.log(yield ch2.selected)
|
break
|
|
}
|
}
|
|
})()
|