0.3.1 • Published 10 years ago

yielding v0.3.1

Weekly downloads
19
License
MIT
Repository
github
Last release
10 years ago

#yielding NPM version Build Status

Easy generators.

Use Node version 0.11.x with --harmony-generators flag to work with es6 generators.

Installation

npm install yielding

Y()

var Y = require('yielding');

var c = Y(function* () {
    var a = yield 1;
    var b = yield 2;
    return a + b;
});

console.log( c.once() ); // 1
console.log( c() ); // 3

Y.toArray()

var odd = Y(function* (limit) {
    for (var i = 0; i < limit; i++) {
        if (i % 2) yield i;
    }
});

console.log( odd.toArray(10) ); // 1,3,5,7,9

Parallel execution

var get = Y.nwrap( require('request').get );

Y(function* () {
    var pages = ['http://google.com', 'http://yahoo.com', 'http://bing.com'];
    var content = yield pages.map(function(url) {
        return get(url);
    });
    console.log(content.map(function(c) { return c.body.length; }));
})();

Async code with wrapper for node functions

var read = Y.nwrap(fs.readFile);

function* getContent(filename) {
    var content = yield read(filename, 'utf-8');
    console.log(content.length);
};

Y(getContent)('./examples/Y.js');

With promises

var q = require('q');

var asyncFn = function(str) {
    var d = q.defer();
    setTimeout(function() {
        d.resolve(str);
    }, 1000);
    return d.promise;
};

Y(function* () {
    console.log(yield asyncFn('Hello'));
    console.log(yield asyncFn('World')); // 1 second later
})();

Creating promises

Y.ncall(fs.readFile, './examples/Y.js', 'utf-8').then(function(content) {
    console.log(content.length);
});

###Errors handling

Y(function* () {
    try { 
      var content = yield Y.ncall(fs.readFile, 'non_exists_file', 'utf-8');
    } catch(e) {
      console.log('ERROR: ' + e.message);
    }
    console.log('done');
})();

###SUSPEND-style

Y(function *async() {
    var content = yield fs.readFile('test/example.txt', 'utf8', async.resume);
})();

See more examples

Bitdeli Badge

0.3.1

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago