Hey -
Just realized there's another simple solution to your issue (that should
work with any of the libraries mentioned in this thread) - just avoid
nested functions:
suspend(function* (resume) {
var contents = yield fs.readFile('idList.json', 'utf8', resume),
ids = contents.split('\n');
for (var i = 0, len = ids.length; i < len; i++) {
var info = yield request.get('http://www.example.com?id=' + ids[i],
resume);
}
})();
Main caveat to the above is that all the requests will happen in serial,
rather than parallel. Like I said earlier, suspend will soon be including
some helper functions to make these scenarios easier (I'll happily accept
any API suggestions around that, too :)).
On Friday, July 12, 2013 5:47:28 PM UTC-4, 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.