DefineJS 0.2.91

After a while eventually DefineJS comes with a bunch of new features to make it easy to use es6 generators along with promises. Being able to pass a function generator to the promise chain is one of the cool features that I really like now in DefineJS. Even IIFEs could disappear now, using this new feature and I my self startd it like this(Not relevant but it is worth noting that AsyncDB is an async local data storage based):

  .then(function * ($) {
    var db = {},
      AsyncDB = yield require('asyncdb'),
      pkg = yield $.getJSON('package.json');'packages', db);

    var pageContent = yield $.get(pkg.repository.url);


    var packageId = yield db.packages.insert({
      version: pkg.version

    return db;
  .then(function * (db) {
    // a totally private and dedicated scope
    // which has access only to the db object
    var packages = yield db.packages.find();

    // This way we could make different scopes
    // with different access levels

A working example of the new feature is now ready to ckeck out in examples folder: define-promise-dev. The code block below shows how it si easy now to setup an application lifecycle.


function * sameLifecycle() {
  var message;
  try {
    var packageInfo = yield config.go();
    var app = yield firstPhase.go(packageInfo);
    var shimModule2 = yield secondPhase.go(app);
    message = yield finalPhase.go(shimModule2);
  } catch (err) {
    message = yield lifecycleInterruption.go(err);

Take a thorough look at the two code block above. They both do the exact same thing without us needing to create IIFEs or to use callbacks.

Of course it still has new freatures comming, very soon.

Click on the post title to leave your comments (powered by Disqus)


17 April 2015