Skip to content

exoticknight/SerialPromise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SerialPromise

run promises with timeout, in queue

you can alse check parallel-promise

Install

npm install queue-promise --save

Usage

import SerialPromise, { StatusCode } from 'serial-promise'

SerialPromise(
  [
    lastResult => {
      // lastResult equals null at first
      // return a promise that resolves in 100ms
    },
    lastResult => {
      // lastResult equals { status: StatusCode.RESOLVE, data:[your data] }
      // return a promise that resolves in 3000ms
    },
    lastResult => {
      // lastResult equals { status: StatusCode.TIMEOUT, timeout: 2000 }
      // return a promise that rejects in 100ms
    },
    lastResult => {
      // lastResult equals { status: StatusCode.REJECT, err:[error] }
      // return a promise that rejects in 3000ms
    },
  ],
  [1000, 2000, 1000, 2000],  // timeout for each promise, no timeout if undefined
  500,  // time delay between each promise, you can even use [500, 1000, 3000] to control
  (progress) => {
    // called whenever a promise's state is changed
    // progress == {
    //   total: 4,  total count of promise
    //   resolve: [],  array of the index of the resolved promises
    //   reject: [],  array of the index of the rejected promises
    //   timeout: [],  array of the index of the timeouted promise
    // }
  }
).then(rets => {
  // rets == [
  //   { status: StatusCode.RESOLVE, data:[your data] },
  //   { status: StatusCode.TIMEOUT, timeout: 2000 }
  //   { status: StatusCode.REJECT, err:[error] },
  //   { status: StatusCode.TIMEOUT, timeout: 2000 }
  // ]
})// NOTE that there is not .catch here

You can use async/await as well.

StatusCode

Status StatusCode
RESOLVE 0
REJECT 1
TIMEOUT -1

Test

npm run test

License

MIT

About

run promises with timeout, in series

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published