yet another Promises/A+ implementation which works in both browser and node
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
lib
test
.gitignore
.travis.yml
Gruntfile.js
README.md
bower.json
example.html
karma.conf.js
package.json

README.md

Promises/A+ logo

YAPI.js Build Status

yet another Promises/A+ implementation which works in both browser and node

Install

Bower

bower install -S yapi

NPM

npm install --save yapi

Usage

You can use two ways to create a promsie.

Option 1

Use YAPI.createPromsie method.

var promise = YAPI.createPromise(function (resolve, reject) {
  // if promise is fulfilled
  resolve();
  
  // or if promise is rejected
  reject();
});

promise.then(function () {
  // fulfilled callback
}, function () {
  // rejected callback
});

Here is an example of a simple XHR2 wrapper written using YAPI.js:

var getJSON = function(url) {
  var promise = YAPI.createPromise(function(resolve, reject){
    var client = new XMLHttpRequest();
    client.open("GET", url);
    client.onreadystatechange = handler;
    client.responseType = "json";
    client.setRequestHeader("Accept", "application/json");
    client.send();

    function handler() {
      if (this.readyState === this.DONE) {
        if (this.status === 200) { resolve(this.response); }
        else { reject(this); }
      }
    };
  });

  return promise;
};

Check the example.html for a full demo which uses the about XHR2 wrapper.

Option 2

Manualy create a deferred object and resolve/reject it ondemand.

var getUserInfo = function () {
  var deferred = YAPI.defer();
  
  // fetch user information throught AJAX
  deferred.resolve(); // if AJAX request succeed
  // or
  deferred.reject(); // if something wrong
  
  return deferred.promise;
};

Develop

npm test # run Promises/A+ Compliance Test Suite
grunt build # jshint & generate min version

Todos