yet another Promises/A+ implementation which works in both browser and node
bower install -S yapi
npm install --save yapi
You can use two ways to create a promsie.
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.
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;
};
npm test # run Promises/A+ Compliance Test Suite
grunt build # jshint & generate min version
- refine readme
- add usage information
- add Promise/A+ logo after pass Promises/A+ Compliance Test Suite
- provide minimized version
- provide
YAPI.all
method - provide
promise.finally
- provide
promise.catch
- test against Promises/A+ Compliance Test Suite