0.0.2 • Published 2 years ago

nv-facutil-time-sequence v0.0.2

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

nv-facutil-time-sequence

  • nv-facutil-time-sequence
  • early,tmout,between promises
  • for time-sensitive actions

install

  • npm install nv-facutil-time-sequence

usage

const  {
    noexist,
    TMOUT,TOO_EARLY,
    before,after,between,
    sequence
} = require("nv-facutil-time-sequence")

example

    function start(name) {
        console.log(`action ${name} started at:${new Date()}`)
    }
    function end(name) {
        return(`action ${name} eneded at:${new Date()}`)
    }


    var actions =  [
        after(0),
        function (resolve) {
            start(0);
            resolve(end(0));
        },          //must happended after 1000 ms
        between(3000,4000),
        function (resolve) {
            start(1);
            setTimeout(
                ()=> {
                    resolve(end(1))
                },
                4500                //====>4500 not-in-range- (3000,4000)
            )
        },          //must happended after 3000 ms AND before 4000 ms FROM lst action finished
        before(2000),
        function (resolve) {
            start(2);
            resolve(end(2))
        },          //must happended after 2000 ms FROM lst action finished
    ]



    > await sequence(actions)
    action 0 started at:Sat Dec 04 2021 06:09:57 GMT+0000 (Coordinated Universal Time)
    action 1 started at:Sat Dec 04 2021 06:09:57 GMT+0000 (Coordinated Universal Time)
    action 2 started at:Sat Dec 04 2021 06:10:01 GMT+0000 (Coordinated Universal Time)
    [
      'action 0 eneded at:Sat Dec 04 2021 06:09:57 GMT+0000 (Coordinated Universal Time)',
      Symbol(tmout),
      'action 2 eneded at:Sat Dec 04 2021 06:10:01 GMT+0000 (Coordinated Universal Time)'
    ]
    >




    var actions =  [
        after(0),
        function (resolve) {
            start(0);
            resolve(end(0));
        },          //must happended after 1000 ms
        between(3000,4000),
        function (resolve) {
            start(1);
            setTimeout(
                ()=> {
                    resolve(end(1))
                },
                3500               // =========>3500 in-range
            )
        },          //must happended after 3000 ms AND before 4000 ms FROM lst action finished
        before(2000),
        function (resolve) {
            start(2);
            resolve(end(2))
        },          //must happended after 2000 ms FROM lst action finished
    ]


    await sequence(actions)



    > await sequence(actions)
    action 0 started at:Sat Dec 04 2021 06:10:56 GMT+0000 (Coordinated Universal Time)
    action 1 started at:Sat Dec 04 2021 06:10:56 GMT+0000 (Coordinated Universal Time)
    action 2 started at:Sat Dec 04 2021 06:10:59 GMT+0000 (Coordinated Universal Time)
    [
      'action 0 eneded at:Sat Dec 04 2021 06:10:56 GMT+0000 (Coordinated Universal Time)',
      'action 1 eneded at:Sat Dec 04 2021 06:10:59 GMT+0000 (Coordinated Universal Time)',
      'action 2 eneded at:Sat Dec 04 2021 06:10:59 GMT+0000 (Coordinated Universal Time)'
    ]
    >

METHODS

  • .settled

ACTION FORMAT

 Act:   (resolve)=>{/*...*/}
 Action: Act | before | after | between  
 Actions: Array<Action>

APIS

  • noexist
  • TMOUT
  • TOO_EARLY
  • before(ms) //timeout
  • between(after_ms,before_ms)
  • after(ms) //must happened after..
  • sequence(actions)

LICENSE

  • ISC