Thanks for the replies, I have a better understanding now of how these libraries are using generators. I hope that one of these types of libraries becomes as popular as the async library and "standard" within the node community. This way of writing async code is much more elegant than the current way of using only callbacks and can help expand node.js usage into other areas. For instance, the script example I wrote is part of a larger command line script I was writing to test some services. Such scripting tends to follow a synchronous flow. I got really frustrated while writing it in an async way (since the natural flow is synchronous, it maps very poorly to the current callback-only style, even libraries like async don't help much). I eventually gave up and quickly wrote the script in python because I had to get the task done for the day. But I want node.js to eventually take python's place in my tool set. So I went back and tried it again with this new generators feature and it was going well until I ran into this issue. Some may say that such use is beyond the scope of node.js, but I think JS and node.js have potential to be more than just network async programming.
On Friday, July 12, 2013 2:47:28 PM UTC-7, cpprototypes wrote: > > I'm using node 0.11.3 with --harmony-generators to try the new feature. I > found two libraries that should help use existing node callback-based code > with generators (suspend and galaxy). The code I'm trying to run was > similar to the following: > > (using suspend) > > var fs = require('fs'); > var request = require('request'); > > suspend(function* (resume) { > var contents = yield fs.readFile('idList.json', 'utf8', resume); > contents.split('\n').forEach(function(id) { > var info = yield request.get('http://www.example.com?id='+id, > resume); > }); > })(); > > (using galaxy) > > var galaxy = require('galaxy'); > var fs = galaxy.star(require('fs')); > var request = galaxy.star(require('request')); > > function* main() { > var contents = yield fs.readFile('idList.json', 'utf8'); > contents.split('\n').forEach(function(id) { > var info = yield request.get('http://www.example.com?id='+id); > }); > }; > > galaxy.unstar(main)(function(err, result) { > console.log('done'); > }); > > Using either library, when node tries to execute the get request ("var > info = yield request.get...") it exits with the following error: > > SyntaxError: Unexpected identifier > > And the error highlights the "request" part in "var info = yield > request.get..." I'm guessing that the creation of the new function scope > in the forEach is somehow causing an issue. But I'm not sure why it's not > working. > > > -- -- 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 nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com 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 nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.