0.3.6 • Published 6 years ago

@maruware/promise-tools v0.3.6

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

promise-tools

travis-ci npm version

A collection of tools for Promise. All functions are TypeScript native.

Install

$ yarn add @maruware/promise-tools

Usage

all\(...promises: Promise\[]): Promise\<T[]>

Promise.all shorthand

import { all } from '@maruware/promise-tools'

async function something() {
  await all(
    Promise.resolve('a'),
    Promise.resolve('b'),
    Promise.resolve('c')
  )
}

each\<T, D>(targets: T[], process: (target: T) => Promise\): Promise\<D[]>

const a = [1, 2, 3]
const f = (n: number) => {
  return Promise.resolve(n.toString())
}
const r = await each(a, f)
// ['1', '2', '3']

chain\(initialValue: T, catchCallback?: (e: Error) => void)

small queue

import { chain } from '@maruware/promise-tools'

const sample = (msg: string) => {
  return new Promise<string>(resolve => setTimeout(() => resolve(msg), 10))
}

const errorLogger = (err: Error) => {
  console.error(err)
}

async function something() {
  const q = chain('', errorLogger)
  q.add(prev => sample(prev + 'a'))
  q.add(prev => sample(prev + 'b'))
  const last = await q.add(prev => sample(prev + 'c'))
  // 'abc'
}

delay(ms: number): Promise\

resolve after milliseconds

import { delay } from '@maruware/promise-tools'

async function something() {
  await delay(1000)
  // do something
}

timeout(ms: number): Promise\

reject after milliseconds

import { timeout } from '@maruware/promise-tools'

async function something() {
  await timeout(1000)
}

defer\(): Deferred\

Create deferred object.

import { defer } from '@maruware/promise-tools'

async function something() {
  const d = defer<string>()

  timeout(50).then(() => d.resolve('success'))
  const result = await d.promise
  // 'success'
}
0.3.6

6 years ago

0.3.5

6 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.0

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago