You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1.8 KiB

Callforth 🏃

npm version minzipped size

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

It simply includes two 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 } from "callforth"

// ...

Alternatively, include this script and:

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

API 👀

eventOn

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

Parameters

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

Return Value

  • payload: what would usually be the first argument of the callback.

timeout

await timeout(delay)

Parameters

  • delay: delay in milliseconds after which the Promise should resolves.

Return Value

  • undefined

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
}