0.4.0 • Published 5 years ago
callforth v0.4.0
Callforth :running:
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 :package:
npm install callforthNow 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 :eyes:
eventOn
const payload = await eventOn(target, successEvent, errorEvent)Parameters
- target :
EventTarget- any object you can calladdEventListeneron. - 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
}