Skip to content

gruhn/callforth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Callforth 🏃

npm version minzipped size

A tiny utility library to replace callbacks with Promises where possible. Don't callback, callforth!

It simply includes a hand-full of functions I see myself re-implementing in nearly every project. So I might as well put them in a package.

Do things like:

await timeout(3000)
await eventOn(videoElement, "loadeddata")
const message = await eventOn(webWorker, "message")

Install 📦

npm install callforth

Now you can:

import { eventOn, timeout, polling } from "callforth"

Alternatively, include this script and:

<script src="./path/to/callforth.umd.js"></script>
<script>
  const { eventOn, timeout, polling } = window.callforth
</script>

API 👀

eventOn

const payload = await eventOn(target, successEvent, errorEvent)

Parameters

  • target : EventTarget - any object you can call addEventListener on.
  • successEvent : string - name of the event you want to await.
  • errorEvent : string (optional) - if this event fires, the promise is rejected.

Return Value

  • Promise<any> - wraps callback result (callbacks first argument)

timeout

await timeout(delay)

Parameters

  • delay : int - milliseconds after which the Promise should resolves.

Return Value

  • Promise<void>

polling

await polling(predicate, { maxTries, interval })

Parameters

  • predicate : any -> boolean - delay in milliseconds after which the Promise should resolve.
  • options : object (optional)
    • maxTries : int (default = 10) - maximum number of times to call predicate before giving up.
    • interval : int (default = 10) - delay in milliseconds between calls of predicate.

Return Value

  • Promise<void>

More Examples

async function loadScript(url) {
  let script = document.createElement("script")

  script.src = url

  await eventOn(script, "loaded")
}
async function primesLessThen(number) {
  primeWorker.postMessage(number)

  const result = await eventOn(primeWorker, "message")

  return result
}

Releases

No releases published

Packages

No packages published