> None of control-flow helpers (steps, asyncs, promises, futures, tamejs, ....) really helps with callbacks. I misspelled, sorry it should be "with errors" not "with callbacks", i.e.
None of control-flow helpers (steps, asyncs, promises, futures, tamejs, ....) really helps with errors. None of them can intercept non-async errors (or more exactly nested sync/async/sync errors). On Tuesday, April 2, 2013 6:01:59 AM UTC+4, Alexey Petrushin wrote: > > > error coalescing is listed as a major benefit of promises > > None of control-flow helpers (steps, asyncs, promises, futures, tamejs, > ....) really helps with callbacks. None of them can intercept non-async > errors. > > As far as I know it's impossible to reliably catch both sync and async > errors, even code generators like tamejs can't do that. The only solution > is to patch JavaScript engine - like with Node.js Domains or Fibers. > > On Monday, April 1, 2013 10:00:18 PM UTC+4, Adam Crabtree wrote: >> >> > idempotentcy is a perf issue in resource starved JS >> Could you expand on this? >> >> I agree completely on your point about branching, excessive then and >> being harder to read. Ultimately, it's my personal belief that given >> equivalent examples people will choose what they feel is most readable (and >> it would not be promises, though that remains up to the individual). >> >> Would you care to fomarlize these a bit more with examples of where you >> feel promises suffer most? >> >> > Domain all the things >> For the near future, I feel it's appropriate to bring to people's >> attention that domains are not meant for catching errors (See >> http://nodejs.org/docs/latest/api/all.html#all_warning_don_t_ignore_errors). >> Unfortunately error coalescing is listed as a major benefit of promises, >> which exacerbates the issue a bit for various reasons. >> >> Cheers, >> Adam Crabtree >> >> >> On Mon, Apr 1, 2013 at 10:39 AM, Bradley Meck <[email protected]>wrote: >> >>> When we have been making large scale software a few things have come up. >>> >>> 1. Callbacks suck for linear workflows (a->b->c) >>> >>> This kind of workflow results in what I like to call the mudslide. >>> Your code really wants to expand into some minor nesting once you have >>> shared state (sometimes immutable state and idempotentcy is a perf issue in >>> resource starved JS [rare use case generally]). >>> But often when composing parallel workflows this is better for >>> composability (using `.bind` or `npm i async`) vs many `.then` calls on a >>> promise. >>> >>> 2. Promises suck for branching workflows (a->(b&&c)->d) >>> >>> When promises enter the parallel (not async) workflow we start to see >>> some fun things happen. >>> `.then` is called, a lot , which gets confusing to read. >>> Promises on their own need some help when making a join after a fork >>> (see `npm i q`). This parallels to the composability fixes using >>> `async.waterfall` above. >>> >>> 3. Domain all the things >>> >>> IDC what it is, if you are serious, both need domains. >>> >>> That being said, there are wrappers both ways, but mostly: determine >>> what kind of workflow you do most often. Most of my things would be awesome >>> if they were linear, but often im grabbing multiple things at once using >>> `async.parallel` combined with `async.waterfall`. >>> >>> -- >>> -- >>> 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. >>> >>> >>> >> >> >> >> -- >> Better a little with righteousness >> than much gain with injustice. >> Proverbs 16:8 >> > -- -- 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.
