Promisify everything in less than ~50 lines. It can be used to implement promises on any JavaScript object.
Or simply:
const w = allora(window)
w.onload.then(() => alert('I am ready!'))
const allora = require('allora')
const g = allora(global)
Promise.all([
g.setImmediate(),
g.setTimeout(200),
g.setTimeout(400)
]).then(() => done())
const w = allora(window)
const p1 = w.setTimeout(500)
const p2 = w.setTimeout(5000)
const p3 = w.requestAnimationFrame()
p1.then(() => alert('I am ready'))
p2.then(() => alert('I am late'))
p3.then(() => alert('frame'))
Promise.all([p1, p2, p3]).then(() => alert('We are all done!'))
Thanks to this pull request it's now also possible to clear the timers
const w = allora(window)
const timer = w.setTimeout(3000)
timer.then(_ => console.log('time over'))
// the valueOf call should be not needed here
// but if you are on node, you will need it https://github.com/nodejs/node/issues/7792
clearTimeout(timer.valueOf())
Allora
does not allow you to do event streams since Promises could be only once fulfilled.
const w = allora(window)
const polling = w.setInterval(3000)
polling.then(() => console.log('This will be called only once!!!'))
However my friend @nilssolanki made stroxy to provide an elegant streaming api to any javascript object. I would highly recommend you stroxy
if you are looking a lightweight events streaming library similar to allora
.
"allora" is the Italian 🇮🇹 word for then