Skip to content
/ pinky Public

Pinky promise helpers for node

License

Notifications You must be signed in to change notification settings

mhio/pinky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 18, 2024
a4c4c13 · Feb 18, 2024
Nov 25, 2022
Feb 18, 2024
Jun 17, 2023
Feb 18, 2024
Feb 18, 2024
Jun 17, 2023
Mar 18, 2022
Feb 8, 2021
Apr 13, 2021
Oct 5, 2022
Feb 18, 2024
Feb 18, 2024
Feb 20, 2023
Feb 20, 2023
Feb 20, 2023
Feb 20, 2023
Feb 18, 2024

Repository files navigation

pinky promise

github.com/mhio/pinky

yarn add @mhio/pinky
npm i @mhio/pinky

delay(ms) ⇒ Promise
delay for ms

delayFrom(ts, ms) ⇒ Promise
Delay from a timestamp for milliseconds

delayTo(ts) ⇒ Promise
Delay until a timestamp milliseconds

map(iterator, asyncFn) ⇒ Promise.<Array>
map an async function across an iterable

mapSeries(iterator, asyncFn) ⇒ Promise.<Array>
map an async function in series across an iterable

mapConcurrent(iterator_in, asyncFn, concurrent_num) ⇒ Promise.<Array>
Use n workers to resolve a function across an iterable. (via .mapSeries) Resulting array is in worker order, then work started order, so doesn't match initial order.

firstWithoutError(iterable) ⇒ Promise
Run a bunch of promises, if the first fails return the next until all promises have been checked. All promises start resolving immediately.

firstInSeriesWithoutError(iterable) ⇒ Promise
Run a bunch of promises in series, if the one fails move onto the next.

allProps(obj) ⇒ object
Resolve all promises in an object

outerSettle()
Create a promise and return the promise,resolve and reject Allows you to resolve/reject the promise out of the promise scope

waitFor(timeout_ms, condition_fn, options) ⇒ object
Wait until a timestamp for some condition function to become truthey. Can be an async or standard function

API docco

const { delay, mapSeries } = require('@mhio/pinky')
import { delay, mapSeries } from '@mhio/pinky'

async function go(){
  const waits = [ 60, 10, 50, 5, 35, 19 ]
  const res = await mapSeries(waits, async (ms) => {
    console.log('wait ms', ms)
    await delay(ms)
    return ms
  })
}

go().catch(console.error)

mhio 2022