Necessitates Proper Modularity

    yielding

    0.3.1 • Public • Published

    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 (% 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

    Install

    npm i yielding

    DownloadsWeekly Downloads

    1

    Version

    0.3.1

    License

    MIT

    Last publish

    Collaborators

    • mikach