uci-utils-ready/examples/example.js

53 lines
1.8 KiB
JavaScript

import { Ready } from '../src/ready'
import { EventEmitter } from 'events'
let emitter = new EventEmitter()
// let verbose = process.env.VERBOSE==='true'
const late=500
let example = new Ready({emitter: emitter})
let subscribe = ()=>{
console.log('subscribing at',late, 'ms')
example.subscribe(ready => {
console.log(`-----------Subscriber at ${late} ms--------------?`,ready)
console.log('the failed observer:', example.failure, ',details:', example.getObserverDetails(example.failure))
console.log('the total state', example.state)
console.log('---------------------------------------')
})
}
if (!late) subscribe()
else setTimeout(subscribe,late)
example.addObserver('a',{details:{desc:'this is the a observer which comes from an emitter'}})
// .subscribe(ev=>{console.log('a',ev)})
example.addObserver('b')
// .subscribe(ev=>{console.log('b',ev)})
example.addObserver('c')
// .subscribe(ev=>{console.log('c',ev)})
console.log(' observers added>',example.observers)
example.combineObservers('a:b',['a','b']).subscribe(ready=>console.log('ab combo state>',ready))
console.log('-------------emitting, b true -----------------')
emitter.emit('b',true)
console.log('-------------emitting, c true -----------------')
emitter.emit('c',true)
console.log('===============done emitting =================')
setTimeout(async () => {
console.log('============emitting a true after 1 sec===================')
emitter.emit('a',true)
},1000)
setTimeout(async () => {
console.log('============emitting a false after 2 sec===================')
emitter.emit('a',false)
},2000)
setTimeout(async () => {
console.log('============removing a after 3 sec===================')
example.removeObserver('a')
console.log('observers after removal>',example.observers)
},3000)
setTimeout(async () => {console.log('timeout done');process.exit()},10000)