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.
		
		
		
		
		
			|  | 10 months ago | |
|---|---|---|
| .. | ||
| dist | 10 months ago | |
| src | 10 months ago | |
| README.md | 10 months ago | |
| package.json | 10 months ago | |
		
			
				
				README.md
			
		
		
	
	Callforth 🏃
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- addEventListeneron.
- 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
}