1.0.1 • Published 4 years ago
nv-data-fifo v1.0.1
nv-data-fifo
- nv-data-fifo is very simple util of FIFO List
- only support 5 action : unshift/pop/unshift_some/pop_some/clear
- just a array-like object, the only different is it attach event for each-action
- two mode: fixed / unlimited
- in fixed: unshift will trigger auto-drop when reach-max-size, simulate the back-pressure
- in unlimited, will NOT trigger drop,others same
- fixed performance is better,coz it only USE Array push/unshift when INIT
install
- npm install nv-data-fifo
usage
const {Fixed,Unlimited,EVENT_DICT} = require("nv-data-fifo")
fixed mode
const {Fixed,EVENT_DICT} = require("nv-data-fifo")
const {E,ET} = require("nv-facutil-event");
###init
//oet is for back-pressure
var oet = new ET()
oet.addEventListener(EVENT_DICT.unshift,(r)=>{console.log("unshift one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.unshift_some,(r)=>{console.log("unshift some: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop,(r)=>{console.log("dropped one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop_some,(r)=>{console.log("dropped some: ",r,r.data)})
var fixed = new Fixed(6,oet)
//iet is for feedback from who use the pop/pop_some
fixed.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
fixed.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})
> fixed.max_size
6
> fixed.length
0
>
unshift
> fixed.unshift('A')
unshift one: E {
type: 'unshift',
defaultPrevented: false,
cancelable: false,
timeStamp: 11428.103470087051
} A
> fixed.unshift_some('E','D','C','B')
unshift some: E {
type: 'unshift_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 41938.70773601532
} [ 'E','D','C','B' ]
undefined
>
> fixed.unshift('F')
unshift one: E {
type: 'unshift',
defaultPrevented: false,
cancelable: false,
timeStamp: 66775.0242960453
} F
undefined
> fixed.length
6
>
> fixed.unshift('G')
dropped one: E {
type: 'drop',
defaultPrevented: false,
cancelable: false,
timeStamp: 98929.20327019691
} A
unshift one: E {
type: 'unshift',
defaultPrevented: false,
cancelable: false,
timeStamp: 98931.2591381073
} G
undefined
> fixed
[ 'G', 'F', 'E', 'D', 'C', 'B' ]
>
> fixed.dropped
'A'
>
> fixed.unshift_some('I','H')
dropped some: E {
type: 'drop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 326382.5275170803
} [ 'C', 'B' ]
unshift some: E {
type: 'unshift_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 326383.1321899891
} [ 'I', 'H' ]
undefined
>
> fixed.dropped
[ 'C', 'B' ]
>
> fixed
[ 'I', 'H', 'G', 'F', 'E', 'D' ]
pop
> fixed.pop()
popped one: E {
type: 'pop',
defaultPrevented: false,
cancelable: false,
timeStamp: 9037.022995948792
} D
'D'
> fixed
[ 'I', 'H', 'G', 'F', 'E' ]
>
fixed.pop_some(2)
popped some: E {
type: 'pop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 31407.385972976685
} [ 'F', 'E' ]
[ 'F', 'E' ]
> fixed
[ 'I', 'H', 'G' ]
>
clear
> fixed.lefted_length
6
> fixed
[]
> fixed.length
0
>
unlimited mode
const {Unlimited,EVENT_DICT} = require("nv-data-fifo")
const {E,ET} = require("nv-facutil-event");
###init
//oet is for notification
var oet = new ET()
oet.addEventListener(EVENT_DICT.unshift,(r)=>{console.log("unshift one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.unshift_some,(r)=>{console.log("unshift some: ",r,r.data)})
var unlimited = new Unlimited(oet)
//iet is for feedback
unlimited.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
unlimited.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})
unshift
> unlimited.unshift('A')
unshift one: E {
type: 'unshift',
defaultPrevented: false,
cancelable: false,
timeStamp: 11576.488898992538
} A
undefined
> unlimited.unshift_some('D','C','B')
unshift some: E {
type: 'unshift_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 33032.11891102791
} [ 'D', 'C', 'B' ]
undefined
>
> unlimited
[ 'D', 'C', 'B', 'A' ]
>
pop
unlimited.pop();
popped one: E {
type: 'pop',
defaultPrevented: false,
cancelable: false,
timeStamp: 41300.350902080536
} A
'A'
> unlimited.pop_some(2)
popped some: E {
type: 'pop_some',
defaultPrevented: false,
cancelable: false,
timeStamp: 73560.28495311737
} [ 'C', 'B' ]
[ 'C', 'B' ]
>
> unlimited
[ 'D' ]
>
clear
> unlimited.clear()
undefined
> unlimited
[]
>
METHODS
fixed
fixed.clear fixed.constructor fixed.dropped
fixed.get_item fixed.iet fixed.lefted_length
fixed.length fixed.lst_index fixed.max_size
fixed.oet fixed.pop fixed.pop_some
fixed.unshift fixed.unshift_some
fixed[Symbol.iterator]
unlimited
unlimited.clear unlimited.constructor unlimited.get_item
unlimited.iet unlimited.length unlimited.lst_index
unlimited.oet unlimited.pop unlimited.pop_some
unlimited.unshift unlimited.unshift_some
unlimited[Symbol.iterator]
LICENSE
- ISC