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.


Reply via email to