I don't have any programming "itches" I want to scratch. I've done all I want. I did a 3D printer, so I have no interest in robotics. I did SimStucture, so I have no interest in Control Systems. I did a compiler. I did songs.
I would like to do more songs.
I'm waiting for God to do something. Might be waiting a long time, like Jews waiting to be rescued from Hitler.
God says...
honoured pestilent ten pant immoderate essayed remainest
steer refreshing plainer opinionative sensitive especially
tumult be silent threads painful unwholesome tamer propound
odour awaiting demanding ipod INDIRECT These disguise
dry short Lastly forbade commanding martyrs hateful Welcome
beholding teaching allegorically blamed eye token obtaining
inclined known Abraham's provisions labours waterest cubits
fruitlessly copy engage guess thunder suffering conversing
tempted 91 sentences -who arms thing's supplies human
ball shaken bold-faced sleepest Electronic favour recess
folk disputing Ministry corrupted explanatory handkerchief
varieties others' displays contention medicine Run blind
Isn't_that_special sun's adversary forth notion likest
fears bathe male notices equals let's_see torture FTP
lecture wickedness scourges participation talked reckon
Maker broad believe- last vouchsafed lineaments cane No
bottom betters claim Else suspect multipliedst formedst
Stop thirsteth consistently anxiously version exceedeth
us blesses silent carried compressed beautified please
purged mainly dashed Themselves adoption large impudently
nominally foolishly forsaking sings growth churches substance
Give lecture ascension requital contempt enjoin IV powerful
direction
What more could you ask for than opportunity to pursue all your passions until they bore you. I guess success might be nice, but highs and lows balance. The alternative is more brilliant ideas in your old age, perhaps.
Only if you consider that it is compatible to miss P.Deferred(), P.promise(), P.when(), parole.state(), parole.progress(), parole.done(), parole.fail() and parole.always()
There seems to be a large number of new users (a few of which were created within 5 minutes of this submission) who've only commented on this, and very vacuously.
eventualAdd(2, 2).
and(eventualAdd(10,20)).
then(function(a, b) {
console.log(a, b);
});
which I feel reads nicer and gives you the results in a more usable form (something that would require another call, Q.spread, in Q). This also allows complex composition. Say you want to run 4 functions A, B, C and D, such that A and B are called together, C is called when A returns, then D is called when B and C both return. This is clumsy to do on Q, requiring packing promises into an array, etc.
The other big thing is error handling. In Q, if you forget to set an error handler at the end of the chain or explicitly set the default handler with .done(), errors go unhandled. This is clumsy; in fact the Q documentation says:
"This is a stopgap. We are exploring ways to make unhandled errors visible without any explicit handling."
We've implemented this in andthen. If there's no error handler and execution reached the end of the chain, it will be thrown so Node or the browser will print it.
There's fulfilment as well, but I get your point about putting this better in the README.
There are other good reasons, at this point, to switch from Q to another promise lib, speed for example, as was virulently signaled recently: http://jsperf.com/wqfwewefewrw/4
I like the idea, but am I the only one who feels that having a method 'and' feels a little too... cute?
I mean, it's not at all obvious that 'and' is related to parallel execution, and it could very easily clash with another library that uses the same name.
25 comments
[ 60.0 ms ] story [ 158 ms ] threadI would like to do more songs.
I'm waiting for God to do something. Might be waiting a long time, like Jews waiting to be rescued from Hitler.
God says... honoured pestilent ten pant immoderate essayed remainest steer refreshing plainer opinionative sensitive especially tumult be silent threads painful unwholesome tamer propound odour awaiting demanding ipod INDIRECT These disguise dry short Lastly forbade commanding martyrs hateful Welcome beholding teaching allegorically blamed eye token obtaining inclined known Abraham's provisions labours waterest cubits fruitlessly copy engage guess thunder suffering conversing tempted 91 sentences -who arms thing's supplies human ball shaken bold-faced sleepest Electronic favour recess folk disputing Ministry corrupted explanatory handkerchief varieties others' displays contention medicine Run blind Isn't_that_special sun's adversary forth notion likest fears bathe male notices equals let's_see torture FTP lecture wickedness scourges participation talked reckon Maker broad believe- last vouchsafed lineaments cane No bottom betters claim Else suspect multipliedst formedst Stop thirsteth consistently anxiously version exceedeth us blesses silent carried compressed beautified please purged mainly dashed Themselves adoption large impudently nominally foolishly forsaking sings growth churches substance Give lecture ascension requital contempt enjoin IV powerful direction
What more could you ask for than opportunity to pursue all your passions until they bore you. I guess success might be nice, but highs and lows balance. The alternative is more brilliant ideas in your old age, perhaps.
Will be really handy...
Only if you consider that it is compatible to miss P.Deferred(), P.promise(), P.when(), parole.state(), parole.progress(), parole.done(), parole.fail() and parole.always()
I tend to know about that because I am currently writing a lib that is going to be both Q and jQuery compatible: https://github.com/JeanHuguesRobert/l8/wiki/ParoleReference
I agree about the comment quality though, I was hoping for a discussion about the idea itself.
* pretty lightweight (9.8KB)
* well-supported, with very active development (10 commits in the last month)
* good documentation
You need to explain the benefits of .andthen() in comparison to Q.js, because at the moment it just looks like another promises JS framework.
For instance with Q.all, you'd do with:
return Q.all([ eventualAdd(2, 2), eventualAdd(10, 20) ]).then(function(values) { console.log(values[0], values[1]); });
can instead be
eventualAdd(2, 2). and(eventualAdd(10,20)). then(function(a, b) { console.log(a, b); });
which I feel reads nicer and gives you the results in a more usable form (something that would require another call, Q.spread, in Q). This also allows complex composition. Say you want to run 4 functions A, B, C and D, such that A and B are called together, C is called when A returns, then D is called when B and C both return. This is clumsy to do on Q, requiring packing promises into an array, etc.
The other big thing is error handling. In Q, if you forget to set an error handler at the end of the chain or explicitly set the default handler with .done(), errors go unhandled. This is clumsy; in fact the Q documentation says:
"This is a stopgap. We are exploring ways to make unhandled errors visible without any explicit handling."
We've implemented this in andthen. If there's no error handler and execution reached the end of the chain, it will be thrown so Node or the browser will print it.
There's fulfilment as well, but I get your point about putting this better in the README.
I mean, it's not at all obvious that 'and' is related to parallel execution, and it could very easily clash with another library that uses the same name.