Re:Comparing Node.js Promises, Try/Catch, Angular Zone.js an...
by eldude on Wednesday April 16, 2014 @01:13PM
(#7599052)
A major limitation of using try/catch is that V8 will DEOPT your function call, which can be a 5-10x performance hit (to the current closure). The best way to avoid this is with a silly hack:
function trycatchit(fn, that, args) {
try {
return fn.apply(that, args)
} catch(e) {
return e
}
}
var value = trycatchit(fn, null, 'someValue')
if (value instanceof Error) {
...
}
Really though, you should just let co or whatever generator library you're using catch the error and rethrow it (or pass it to a callback) or be mindful to minimize your error handling.[1] https://github.com/CrabDude/trycatch/blob/master/lib/trycatc...
Re:Comparing Node.js Promises, Try/Catch, Angular Zone.js an...
by bajtos on Wednesday April 16, 2014 @12:46PM
(#7598842)
That's not entirely true. If "db.insertUser()" is opening a database connection, who is going to close it on error?
The idea behind Zones for Node.js is to auto-attach new resources to the current zone, so that they can be cleaned when the zone exits.
AFAIK there is no solution for that at the moment.
Re:Comparing Node.js Promises, Try/Catch, Angular Zone.js an...
by ulisesrmzroche on Wednesday April 16, 2014 @01:46PM
(#7599263)
I'm thinking whatever db plugin you're using, but also this pseudo code actually has a lot of implicit things going in the background (koa/co, thunks, etc).
It makes for some readable app code though.
Re:Comparing Node.js Promises, Try/Catch, Angular Zone.js an...
by alexgorbatchev on Wednesday April 16, 2014 @12:45PM
(#7598840)
have you tried Co (https://github.com/visionmedia/co) and if so what's your experience?
edit: I'm using koa, so co is working in the background here. Should have said that earlier, my bad.
var save = function*(){ try { yield db.insertUser(); } catch (e) { throw e; } }