53 lines
1.8 KiB
JavaScript
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)
|