Live data from Hacker News

Allora – Use promises on any JavaScript object

github.com

1–10 of 25 posts

Re: Allora – Use promises on any JavaScript object

#6
It is not possible to fulfill promise more than once.

Thus promisifying of window.setInterval() and window.requestAnimationFrame() is very questionable.

The same applies to possibly repeatable .onXXXX() methods.

   2.2.2 If onFulfilled is a function:
   ...
   2.2.2.3 it must not be called more than once. 
https://promisesaplus.com/

Re: Allora – Use promises on any JavaScript object

#7
post #4

It uses Proxy and Promise classes.

The point is to take APIs that don't and wrap them with said classes, not to provide an alternative.

What percentage of browsers in use implement Proxy and Promise classes? 40 percent?

Re: Allora – Use promises on any JavaScript object

#8
post #6

It is not possible to fulfill promise more than once. Thus promisifying of window.setInterval() and window.requestAnimationFrame() is very questionable. The same applies to possibly repeatable .onXXXX() methods. 2.2.2 If onFulfilled is a function: ... 2.2.2.3 it must not be called more than once. https://promisesaplus.com/

requestAnimationFrame doesn't repeat, it only triggers the function once, you have to request an animation frame on each render to have it run again. Valid point however regarding the other things. Might be a neat api to have like a generator for these kinds of things, something like: for click in window.document.body: // do something with click and then stick this in an async function?

Re: Allora – Use promises on any JavaScript object

#9
post #6

It is not possible to fulfill promise more than once. Thus promisifying of window.setInterval() and window.requestAnimationFrame() is very questionable. The same applies to possibly repeatable .onXXXX() methods. 2.2.2 If onFulfilled is a function: ... 2.2.2.3 it must not be called more than once. https://promisesaplus.com/

It's not possible to fulfill a promise more than once, no.

But a Promise.all method, while outside the A+ spec, conventionally returns a promise for the resolution of all promises in the array passed as an argument; if all those promises are fulfilled, so will be the promise returned by .all, while if any of them is rejected, so will be the etc., etc.

So the browser example given in the Allora Github readme is perfectly reasonable. It's the exact same kind of thing you do when, for example, you need to await the completion of multiple separate HTTP requests in order to do something with all of their results. While, again, .all isn't part of the A+ standard, this is perfectly conventional and unremarkable behavior; not only is it unsurprising to see in a library like this one, it would be exceptional in its absence if it weren't there.

That said, I would be curious to see Allora compared with, for example, Bluebird's "promisifyAll" method, which appears to do much the same thing.

Re: Allora – Use promises on any JavaScript object

#10
post #6

It is not possible to fulfill promise more than once. Thus promisifying of window.setInterval() and window.requestAnimationFrame() is very questionable. The same applies to possibly repeatable .onXXXX() methods. 2.2.2 If onFulfilled is a function: ... 2.2.2.3 it must not be called more than once. https://promisesaplus.com/

It's not possible to fulfill a promise more than once, no. But a Promise.all method, while outside the A+ spec, conventionally returns a promise for the resolution of all promises in the array passed as an argument; if all those promises are fulfilled, so will be the promise returned by .all, while if any of them is rejected, so will be the etc., etc. So the browser example given in the Allora Github readme is perfec…

So what does this

   thatWindow.setInterval(100).then( foo )
mean exactly? How many times the foo() will be called? And how to stop that interval?
Post reply on HN