Skip to content

inker/tryfunc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tryfunc

NPM version Downloads Dependency status Dev Dependency status

tryCall: try invoking the function until it runs without throwing. Returns the value returned by the function.

tryUntil: try invoking the function until the returned value satisfies the provided validating function. Returns the value returned by the function.

Arguments:

  • func: the function to invoke with the iteration as a parameter
  • (only in tryUntil) validate: the validating function. Stops executing once the validator returns true.
  • Options object:
    • numAttempts: the number of iterations
    • interval: the interval between each attempt
    • onAttempt (optional): the function to invoke after each attempt

Installation

npm install --save tryfunc

Usage

Basic usage:

import { tryCall, tryUntil } from 'tryfunc'

function throwingFunction() {
  // ...
}

async function foo() {
  
  // try calling function
  try {
    const val = await tryCall(throwingFunc, {
      interval: 100,
      numAttempts: 10,
      onAttempt: (err, i, success) => {
        if (err) {
          console.error(err)
        }
        console.log(`attempt ${i} ${success ? 'was successful' : 'failed'}`)
      },
    })
    console.log('val', val)
  } catch (err) {
    console.error('function timed out')
  }

  // repeat until
  try {
    const val = await tryUntil(
      () => Math.random(),
      (val) => val < 0.1,
      {
        interval: 100,
        numAttempts: 10,
        onAttempt: (result, i, success) => {
          console.log('received', result)
          console.log(`attempt ${i} ${success ? 'was successful' : 'failed'}`)
        },
      },
    )
    console.log('val', val)
  } catch (err) {
    console.error('no value smaller than 0.1 produced')
  }

}