81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
import { Observable } from 'rxjs'
|
|
import { Ready, changed, map, tap} from '../src/ready'
|
|
import { EventEmitter } from 'events'
|
|
|
|
let emitter = new EventEmitter()
|
|
|
|
let verbose = process.env.VERBOSE==='true'
|
|
|
|
let combo = false
|
|
|
|
// handler: (r)=> console.log('result:',r)
|
|
|
|
let example = new Ready({emitter: emitter, verbose:verbose})
|
|
|
|
const tObs = new Observable(subscriber => {
|
|
subscriber.next('on')
|
|
subscriber.next('off')
|
|
subscriber.next('enabled')
|
|
setTimeout(() => {
|
|
subscriber.next('F')
|
|
}, 2000)
|
|
setTimeout(() => {
|
|
subscriber.next('T')
|
|
}, 3000)
|
|
})
|
|
|
|
const tPromise = new Promise(function(resolve) {
|
|
setTimeout(()=>resolve('yes'),1000)
|
|
})
|
|
|
|
example.addObserver('e',{details:{desc:'this is the e observer which comes from an emitter'}})
|
|
example.addObserver('ce',{condition: (ev)=>ev.ready, event:'ec'})
|
|
example.addObserver('pe',emitter)
|
|
example.addObserver('obs',tObs)
|
|
example.addObserver('pr',tPromise)
|
|
example.addObserver('extnd',example.getObserver('e').pipe(
|
|
map(state => {
|
|
// console.log('+++++++++++\n','extend before:',state)
|
|
if (state) {
|
|
let val = Math.floor(Math.random() * Math.floor(10))
|
|
// console.log(val)
|
|
state = val <10 ? true:false
|
|
}
|
|
// console.log('extend after:',state,'\n-------------')
|
|
return state
|
|
})
|
|
))
|
|
|
|
if (combo) {
|
|
let combo = example.combineObservers('combo',['e','pr'])
|
|
.pipe(
|
|
tap(state=>console.log('combo e and pr state:',state)),
|
|
changed() // only emit if changed
|
|
)
|
|
|
|
if (combo){
|
|
console.log('subscribing to sub combination e, pr')
|
|
example.subscribe('combo',val => console.log('combo e, pr is:',val))
|
|
}
|
|
}
|
|
example.subscribe(val => {
|
|
console.log('Full Combination>>>>>>>>READY? example:',val)
|
|
console.log('failed observer', example.failure, 'details', example.details.get(example.failure))
|
|
}) // all
|
|
|
|
emitter.emit('ec',{ready:true})
|
|
emitter.emit('pe','yup')
|
|
emitter.emit('e')
|
|
console.log('===============done initial emitting=================')
|
|
setTimeout(async () => {
|
|
console.log('============emitting e false===================')
|
|
emitter.emit('e',false)
|
|
}
|
|
,2000)
|
|
setTimeout(async () => {
|
|
console.log('=================emitting e true================')
|
|
emitter.emit('e',true)
|
|
}
|
|
,4000)
|
|
setTimeout(async () => {console.log('timeout done')},6000)
|