1.0.1 • Published 2 years ago
nv-task-simple-loop v1.0.1
nv-task-simple-loop
- simple reusable promise
install
- npm install nv-task-simple-loop
usage
const {creat_loop, creat_loop_ignore_error} = require("nv-task-simple-loop")
example
auto
function tsk(RETURN,THROW,self) {
setTimeout(
()=>{
console.log(new Date,self.count);
self.count = self.count +1;
RETURN();
},
3000
)
}
var loop = creat_loop("tmout",tsk);
loop.count = 0;
/*
> loop
_LoopStopIfError(3) [ 'tmout', [Function: tsk], false, count: 0 ]
>
*/
var p = loop.run()
/*
> 2022-05-14T11:09:46.697Z 0
> 2022-05-14T11:09:49.703Z 1
> 2022-05-14T11:09:52.715Z 2
2022-05-14T11:09:55.724Z 3
2022-05-14T11:09:58.729Z 4
....
> loop.is_running()
true
> p
Promise {
<pending>,
[Symbol(async_id_symbol)]: 88,
[Symbol(trigger_async_id_symbol)]: 5,
[Symbol(destroyed)]: { destroyed: false }
}
*/
stop
loop.stop();
/*
> loop
_LoopStopIfError(3) [ 'tmout', [Function: tsk], false, count: 28 ]
>
> loop.is_running()
false
> p
Promise {
undefined,
[Symbol(async_id_symbol)]: 88,
[Symbol(trigger_async_id_symbol)]: 5,
[Symbol(destroyed)]: { destroyed: false }
}
>
*/
manual
loop.manual();
await loop
await loop
await loop
/*
> await loop
2022-05-14T11:55:22.102Z 28
undefined
> await loop
2022-05-14T11:55:25.109Z 29
undefined
> await loop
2022-05-14T11:55:28.117Z 30
undefined
>
*/
clone
> loop.clone()
_LoopStopIfError(3) [ 'tmout', [Function: tsk], false, count: 28 ]
>
performance
var loops = Array.from({length:10000}).map((r,i)=>creat_loop(`tsk${i}`,tsk))
loops.forEach(loop=>loop.run())
/*
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
44014 root 20 0 701288 111544 33400 S 28.2 5.5 0:10.47 node
*/
METHODS
loop.clone()
loop.exec_ executor, cant change it when running
loop.is_running
loop.manual() set-to-manual-mode using await loop for next
loop.name_
loop.run()
loop.stop()
APIS
Handle: (RETURN:,THROW,self:Loop) => {} //RETURN is resolve , THROW is reject, self is the Loop
{
ERRORS: Error(2) { 'already_running', 'not_running' },
DFLT_EXEC: [AsyncFunction: DFLT_EXEC],
DFLT_CLONE: [Function: DFLT_CLONE],
creat_loop: [Function: creat_loop](name:String,executor:Handle),
creat_loop_ignore_error: [Function: creat_loop_ignore_error](name:String,executor:Handle)
}
LICENSE
- ISC
1.0.1
2 years ago