1.0.2 • Published 2 years ago

nv-facutil-simple-microq v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

nv-facutil-simple-microq

  • wrap of queueMicrotask AND process.nextTick AND Promise.prototype.finally,apply
  • phigh high priority micro task
  • plow low priority micro task
  • pbest_effort lower priority micro task , only work in nodejs

install

  • npm install nv-facutil-simple-microq

usage

       const {phigh,plow,pbest_effort} = require("nv-facutil-simple-microq")

       in each high/low level :
           first high priority
           then  low  priority
           ---> then next high/low level
           
       when all high/low  task finished:
       
       in each best_effort level :
              best_effort 
              ---> then next best_effort level  

       final:
          ---> goto next-loop-macro-task, such as setTimeout(0)

  

example

function tst() {
   setTimeout(()=>{console.log('setTimeout-0')},0)
   ////
   pbest_effort(() => console.log("best_effort queue  level 1:",111),1);   //----pbest_effort only work on nodejs
   pbest_effort(() => console.log("best_effort queue  level 1:",222),1);   //----pbest_effort only work on nodejs
   pbest_effort(() => console.log("best_effort queue  :",100));            //----pbest_effort only work on nodejs
   pbest_effort(() => console.log("best_effort queue  :",200));            //----pbest_effort only work on nodejs
   ////
   plow(() => console.log("low queue level 0  :",'X'))
   plow(() => console.log("low queue level 0  :",'Y'))
   ////
   plow(() => console.log("low queue level 1  :",'lowA:1'),1)
   plow(() => console.log("low queue level 1  :",'lowB:1'),1)
   phigh(()=>console.log("high queue level 1  :",'M'),1)
   phigh(()=>console.log("high queue level 1  :",'N'),1)
   ////
   phigh(() => {console.log("high queue level 0  :",'c')});
   phigh(() => {console.log("high queue level 0  :",'d')});
   /////
   console.log('\nbegin!')
}


        begin!
        > high queue level 0  : c
        high queue level 0  : d
        low queue level 0  : X
        low queue level 0  : Y
        high queue level 1  : M
        high queue level 1  : N
        low queue level 1  : lowA:1
        low queue level 1  : lowB:1
        best_effort queue  : 100
        best_effort queue  : 200
        best_effort queue  level 1: 111
        best_effort queue  level 1: 222
        setTimeout-0

APIS

  • phigh(f,level=0)
  • plow(f,level=0)
  • pbest_effort(f,best_effort_level=0) //only work in nodejs

  • ph(f) //same as phigh(f,0)

  • pl(f) //same as plow(f,0)
  • pbe(f) //same as pbest_effort(f,0), only work in nodejs

LICENSE

  • ISC