Only terseness/consistency.  It's easy for a module to add a bunch of stuff 
to Function.prototype, and it's then just there with a consistent name.  
For global functions to be available you'd have to require them, though 
this gives you flexibility on the short names, e.g.

var xie = require("callback-helpers").exitOnError;

On Tuesday, March 19, 2013 4:59:58 PM UTC-7, stagas wrote:
>
> What's the difference from a someFunction(foo, xie(2, callbackFn)) 
> pattern that doesn't pollute Function.prototype? 
>
> 2013/3/20 Ken <[email protected] <javascript:>>: 
> > I've been writing a bunch of shell-script-like node scripts lately. 
>  These 
> > mostly call a series of async functions that take the usual function 
> (error, 
> > data) { ... } callback, and generally they handle any error along the 
> way by 
> > logging it and exiting.  Here's a naive example using aws-sdk to make a 
> > couple EC2 API calls in serial 
> > 
> > var AWS = require("aws-sdk"); 
> > 
> > var ec2 = new AWS.EC2.Client(); 
> > 
> > ec2.runInstances({ ... }, function (error, runInstancesResponse) { 
> >   if (error) { 
> >     console.log(error); 
> >     process.exit(1); 
> >   } else { 
> >     // ... get the instanceIds from response as input to createTags 
> >     ec2.createTags({ ... }, function (error, createTagsResponse) { 
> >       if (error) { 
> >         console.log(error); 
> >         process.exit(2); 
> >       } else { 
> >           // ... do further processing ... 
> >       } 
> >     }); 
> >   } 
> > }); 
> > 
> > As you can see a lot of the total lines are just totally boilerplate if 
> > (error) barf.  Since we've got a functional language here, pretty easy 
> to 
> > encapsulate that, e.g. with this 
> > 
> > Function.prototype.xie = Function.prototype.exitIfError = function 
> > (exitCode) { 
> >   var f = this; 
> >   return function (error, data) { 
> >     if (error) { 
> >       console.log(error); 
> >       process.exit(exitCode || 1); 
> >     } else { 
> >       f.call(this, data); 
> >     } 
> >   }; 
> > } 
> > 
> > our code collapses to just 
> > 
> > ec2.runInstances({ ... }, function (runInstancesResponse) { 
> >   // ... get the instanceIds from response as input to createTags 
> >   ec2.createTags({ ... }, function (createTagsResponse) { 
> >     // ... do further processing ... 
> >   }.xie(2)); 
> > }.xie(1)); 
> > 
> > Which feels a lot more readable to me.  Is there precedent for this 
> > technique? A name for it? Any well known modules that implement it?  Any 
> > obvious horrible side effects?  Clearly not applicable to sophisticated 
> > error handling, but for this basic "it all works or just give up" kind 
> of 
> > thing it seems handy.  Could add "abort if error", "throw if error", 
> "emit 
> > if error" flavors as well. 
> > 
> > -- 
> > -- 
> > Job Board: http://jobs.nodejs.org/ 
> > Posting guidelines: 
> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines 
> > You received this message because you are subscribed to the Google 
> > Groups "nodejs" group. 
> > To post to this group, send email to [email protected]<javascript:> 
> > To unsubscribe from this group, send email to 
> > [email protected] <javascript:> 
> > For more options, visit this group at 
> > http://groups.google.com/group/nodejs?hl=en?hl=en 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "nodejs" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to