1.0.4 • Published 2 years ago
nv-facutil-simple-sema v1.0.4
nv-facutil-simple-sema
- simple promise sema
install
- npm install nv-facutil-simple-sema
usage
const {Simple,Full} = require("nv-facutil-simple-sema")
example
###simple
var sema = new Simple(3)
var o0 = sema.acquire()
var o1 = sema.acquire()
var o2 = sema.acquire()
> o0
true
> o1
true
> o2
true
> sema.used_
3
> sema.lefted_
0
> sema.max_
3
>
> var o3 = sema.acquire()
> o3
Promise { <pending> }
> sema.used_
3
> sema.pending_
1
>
> sema.release()
> o3
Promise { true }
>
> sema.pending_
0
> sema.release()
undefined
> sema.used_
2
> sema.acquire()
true
>
> sema.used_
3
>
###full
var sema = new Full(3)
> var id0 = sema.acquire()
undefined
> id0
'CIl6HY1LRBDXrJSSWd0zTAkQkgkrxiYh0jcClrNUB5EIbWwifbtFv_FeUYaRa9zD'
> sema.used_
1
> var id1 = sema.acquire()
undefined
> sema.used_
2
> sema.lefted_
1
>
> var id2 = sema.acquire()
undefined
> id2
'VKRyk71Ko1AMdN19k_I5bGgfmvbims9ScULaZWpjjHuTlc_P1jGmLXO2oKR3Ecdx'
>
> var id3 = sema.acquire()
undefined
> id3
Promise { <pending> }
>
> var id4 = sema.acquire()
undefined
> id4
Promise { <pending> }
>
> sema.pending_
2
> sema.used_
3
sema.release(id2)
> id3
Promise {
'u857DdZ_W5E22AeHImpOFZLMzU9X1h2RKVZQXzFjZWIxwJGV24N0nmxIPNm-EKvu'
}
> id4
Promise { <pending> }
> sema.used_
3
> sema.pending_
1
> sema.release(id1)
> id4
Promise {
'pPELrvX5QH3FioHWGu565NEm7v_budec-GbIPLwu8C7Y87UnClT1U5_bDDZKrADZ'
}
> id0
'O2MkWKcwkCujilS8z-i34PiW5jwAXaHTE6cukQ7WS95juJiNXpETowgB0j2lYaTm'
> sema.is_inuse(id0)
true
> sema.begin_at(id0)
2021-12-02T03:53:49.809Z
> sema.duration(id0)
78161
> sema.duration(id0)
80545
>
METHODS
###simple
- sema.acquire()
- sema.release()
- sema.max_
- sema.lefted_
- sema.used_
- sema.pending_
###full
- sema.acquire(tmout,set_tmout=setTimeout):Promise|Char64Id
- sema.release(id)
- sema.begin_at(id):MS
- sema.duration(id):MS
- sema.is_inuse(id):Boolean
- sema.is_pending(id):Boolean
- sema.max_
- sema.used_
- sema.lefted_
- sema.pending_
APIS
LICENSE
- ISC