/simply-deferred

A deferred library for Node.js and the browser with a jQuery compatible API

Primary LanguageCoffeeScriptMIT LicenseMIT

#Simply Deferred ###Simplified jQuery Deferred API for Node and the browser

##Installation npm install simply-deferred

If you're on a browser, simply include https://raw.github.com/sudhirj/simply-deferred/master/deferred.min.js

##Usage var Deferred = require('simply-deferred').Deferred;
var rendering = new Deferred(); rendering.done(function(){ console.log('Finished rendering'); });

//...

rendering.resolve();

##API Simply Deferred is partially compatible with jQuery's API, so the docs and usage are the same, except that they're restricted to the following methods:

  • Deferred()
  • deferred.state()
  • deferred.done()
  • deferred.fail()
  • deferred.always()
  • deferred.promise()
  • deferred.resolve()
  • deferred.reject()
  • when()

In my experience, these methods cover over 90% of all use cases. I've also decided to drop resolveWith and rejectWith because CoffeeScript and most, if not all JS libraries now provide easier ways to pre-bind your functions. This is allowed the code to be far simpler, smaller and better tested.

###Usage with Zepto Simply Deffered also acts as a plugin to Zepto. The absence of a Deferred library was one of the biggest reasons I've been holding back, so I thought it made sense to write one. Once you have both Zepto and Simply Deferred on your page, just do Deferred.installInto(Zepto) to set it up. The installation makes the following changes to bring it closer to jQuery:

  • Aliases the Deferred constructor to $.Deferred.
  • Aliases the when method to $.when.
  • Wraps $.ajax to return a promise, which has only the following methods: state(), done(), fail() and always(). The arguments passed to the done and fail callbacks are the same ones passed to the success and error options.