tiny-deferred.js
Implementation originally inspired by Mariusz Nowak's deferred
Features
- Very fast
- Easy to understand
- Dependency free
- Using native JavaScript code
- Works on server and browser side smoothly
- Works with require.js library
- Written with TDD
- Compiled + gzipped weighs less than 1kB
Why to use tiny-deferred?
- You dont have to remember about .catch'ing errors - this library is automatically showing catched JS errors! No more hidden JS errors
Installation
- download from Github
- npm:
npm install tiny-deferred.js
- bower:
bower install tiny-deferred
Methods
tiny-deferred.js's promise is chainable. Each promise method is returning new promise instance.
defer.resolve(value/promise)
Value can be a callback, promise or data
Resolving awaiting deferreds and executing win callbacks
defer.resolve(value/promise)
Value can be a callback, promise or data
Resolving awaiting deferreds and executing fail callbacks
promise.then(win, fail)
After defer.resolve() - executing win callback
After defer.reject() - executing fail callback
promise.always(callback)
After defer.resolve() and defer.reject() - executing callback
Examples
Basic example
var defer = ; defer;// async execution - imagine ajax call;
Nesting
var defer1 = defer2 = x = {} promise; // defer1 will still be waiting for defer2 resolvedefer1;// this callback will be postponed until defer2 resolvespromise = defer1promise;// defer2 resolves so defer1 will immadietely execute awaiting callbacksdefer2; console; // true (promise is resolved)console; // [{}, 'foo']
Nesting - another example
var defer1 = promise1 = defer1promise x = {} defer2 = promise2 = defer2promise; ; // promise1 will be waiting to execute awaiting callbacks until defer2 resolvesdefer1;// imagine ajax call;
Chaining
var defer = promise = deferpromise arg1 = 'arg1' arg2 = 'arg2' arg3 = 'arg3'; // this chain will be postponed until defer resolvespromise; // imagine here ajax call;
Executing more callbacks on resolve
var defer = promise = deferpromise count = 0; // we can bind to promise as many callbacks as we want// these callbacks will be executed 'fifo' order; ; defer;
Processing collections - map
var text = 'Lorem Ipsum is simply dummy text of the printing'; deferred;
Processing collections - reduce
var defer1 = ;var defer2 = ;var defer3 = ;var values = 238; deferred; defer1;defer2;defer3;
For more working examples:
License
MIT