No description, website, or topics provided.
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
README.md
index.js
package.json

README.md

genzen

Zen for Generators.


It's a small library, designed to fit seamlessly into the existing node ecosystem.

Install

npm install genzen

Note: A decent version of node is required (at least 0.11.3)

Usage

genzen(gen[, zen])

Runs the generator gen until it reaches the zen state (haha!), then calls zen (defaults to noop)

Example

Thunks!

var genzen = require('genzen');

var sleep = function(ms) {
  return function(fn) {
    setTimeout(fn, ms);
  };
};

genzen(function* () {
  console.log(1);
  yield sleep(1000);
});

Promises!

var genzen = requrie('genzen');
var Q = require('q');

var sleep = function(ms) {
  var deferred = Q.defer();
  setTimeout(function() {
    deferred.resolve();
  }, ms);
  return deferred.promise;
};

genzen(function* () {
  console.log(1);
  yield sleep(1000);
  console.log(2);
});

Plain old node callbacks!

var genzen = require('genzen')
var fs = require('fs');

genzen(function* (zen) {
  var result = yield fs.readFile('./exist', 'utf-8', zen);
  console.log(result);
  try {
    result = yield fs.readFile('./not.exist', 'utf-8', zen);
  } catch(err) {
    console.error(err);
  }
});

Nested generators! (generator delegation)

var genzen = require('genzen');

function* nested(a, b, zen) {
  console.log(a);
  yield sleep(1000);
  console.log(b);
  yield sleep(1000);
}

genzen(function* (zen) {
  console.log(1);
  yield sleep(1000);
  console.log(2);
  yield* nested(3, 4, zen); // notice the `*` after yield
  console.log(5);
});

Author

@madbence on Twitter

License

MIT