Move an async function into its own thread.
npm install greenlet-with-edge
sh
npm i -S greenlet
`
Accepts an async function with, produces a copy of it that runs within a Web Worker.
> ⚠️ Caveat: the function you pass cannot rely on its surrounding scope, since it is executed in an isolated context.
`
greenlet(Function) -> Function
`
Example
Greenlet is most effective when the work being done has relatively small inputs/outputs.
One such example would be fetching a network resource when only a subset of the resulting information is needed:
`js
import greenlet from 'greenlet'
let getName = greenlet( async username => {
let url = https://api.github.com/users/${username}
let res = await fetch(url)
let profile = await res.json()
return profile.name
})
console.log(await getName('developit'))
`
🔄 Run this example on JSFiddle
Transferable ready
Greenlet will even accept and optimize transferables as arguments to and from a greenlet worker function.
Browser support
Thankfully, Web Workers have been around for a while and are broadly supported by Chrome, Firefox, Safari, Edge, and Internet Explorer 10+.
If you still need to support older browsers, you can just check for the presence of window.Worker:
`js
if (window.Worker) {
...
} else {
...
}
`
$3
If your app has a Content-Security-Policy,
Greenlet require worker-src data: and script-src data:` in your config.