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 [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.