ByunX
state management + event emitter + reactive stream
Examples
Basic
const store = ; store;// 1store;// 3 store; store;// event trigger,// {a:3, b:4, sum:7}
Stream
const store = ; store ;//sum: 3 store;//sum: 7store;//sum: 11 store;store;store;//nothing...
API
Store
Stream
- buffer
- debounce
- delay
- distinct
- distinctUntilChanged
- filter
- flatMap
- last
- map
- merge
- pluck
- publish
- reduce
- scan
- skip
- subscribe
- take
- throttle
- zip
Store
get(key?: string, defaultValue = null)
store;store; // get nested property value
on(name: string, handler: function)
store; store; store;// update:before {a:1, b:2, sum:3}// updated {// store: store,// name: "update",// args: [3,4],// data:{a:3, b:4, sum:7}// }
global events : *
, *:before
on(handler: function)
alias on("*", listener: function)
off(name: string, listener?: function)
off(listener: function)
clear registered event listeners
dispatch(name: string, ...args)
execute action.
dispatchQ(name: string, ...args)
add action to the queue.
store;store; store;store; console;// end: {a:1, b:2, sum:3} // update: {a:1, b:3, sum:4}// update: {a:2, b:4, sum:6} // *: {a:2, b:4, sum:6}
stream()
return stream
Stream
buffer(size: number)
1--3---4------5---3----2------
buffer(3)
-------[1,3,4]---------[5,3,2]
store ; store;//[ {a:1,b:2,sum:3}, {a:2,b:3,sum:5} ]
debounce(milliseconds: number = 100, immediate?: boolean)
-1-------2--3--4--5------6----
debounce(300)
----1-----------------5------6
delay(milliseconds: number)
-1-------2--3--4--5------6----
delay(300)
----1-------2--3--4--5------6-
distinct()
-1-------2--1--1--2------3-
distinct()
-1-------2---------------3-
distinctUntilChanged()
-1-------2--1--1--2------3--
distinctUntilChanged()
-1-------2--1-----2------3--
filter(handler: function)
-1-------2--1--1--2------3---
filter((v,i)=>i%2===0)
-1----------1-----2----------
flatMap(handler: function)
-1----2---3-------4-------
flatMap((v,i)=>[v,i])
-10---21--32------43------
last()
--1----2---3-------4|
last()
-------------------4|
map(handler: function)
-1----2---3-------4--
map(v=>v*2)
-2----4---6-------8--
merge(stream)
-1----2---3-------4--
---a--------b-c-----d
merge(stream)
-1-a--2---3-b-c---4-d
store1 ;
pluck(key: string)
store ;// sum: 4 store;// sum: 5
publish()
const stream = store ;//sum: 4 stream;//sum: 4stream;//sum: 4
publish to child stream
reduce()
-----1----2------3-------4|
reduce((prev,v)=>prev+v, 0)
-------------------------10|
scan(handler: function, initValue = null)
-----1----2------3-------4|
scan((prev,v)=>prev+v, 0)
-----1----3------6-------10|
skip(amount: number)
--1----2---3----4-----5--
skip(3)
----------------4-----5--
subscribe(handler: function, immediately?: boolean=true)
subscribe stream. If immediately option is false, it will be subscribed after dispatch or publish.
const stream = store ;//nothing stream;// sum 3
take(limit: number)
--1----2---3----4-----5--
take(3)
--1----2---3|
throttle(milliseconds: number = 100)
-1------2-3-4-5-6-----
throttle(300)
-1------2---4---6-----
zip(...streams)
---1--------2---3---------
----a-------------bc------
---xyz--------------------
zip(stream1, stream2)
---[1,a,x]------[2,b,y][3,c,z]-
store1 ;
License
MIT