Callforth
๐
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 calladdEventListener
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.
- maxTries :
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
}