Z
Utility library for JavaScript promises
Test status
It's also been tested in Node.js 0.10 and 0.11.
Installation
Use npm: npm install z-core
and then var Z = require('z-core');
Or bower: (not uploaded yet)
Or download it manually from the dist
folder of this repo.
Wrapping functions to accept promises as parameters and return promises
Use bindSync
to create promise-friendly functions from sync functions.
var pmin = Z.bindSync(Math.min);
pmin(10, 5).then(function(minValue) {
console.log(minValue);
});
var promise = returnsTheValue2AsPromise();
pmin(promise, 5).then(function(minValue) {
console.log(minValue);
});
Use bindAsync
to create promise-friendly functions from async functions.
var postPromisedJSON = Z.bindAsync(postJSON);
var agePromise = returnsTheValue28AsPromise();
postPromisedJSON('/people', { name: 'Jakob', age: agePromise }).then(function(res) {
console.log(res);
});
Augmenting promises
Extend the promises returned by Z using mixins.
Z.mixin({
get: function(prop) {
return this.value[prop];
},
toLowerCase: function() {
return this.value.toLowerCase();
},
first: function(n) {
if (n == null) {
n = 1;
}
return this.value.slice(0, n);
},
log: function() {
console.log(this.value);
}
});
var getPromisedJSON = Z.bindAsync(getJSON);
var firstThreeInName = getPromisedJSON('/cookies/123').get('name').toLowerCase().first(3);
firstThreeInName.log();
Use a prepackaged version of Z
There are several mixin packages available for your convenience:
And even bundles where certain set of mixins have already been applied:
- z-std-pack: Z, builtins and underscore bundled together.
Additional resources
Slides from 2014-02-25 presentation on Z
Code from the above presentation