polygoat is a tool to make functions support both callback and promise styles.
- very small, < 30 lines of code
- no promise support/polyfill required
- simple, hack-free
- Node.js and browsers
- fast, see benchmark
npm install polygoat
var pg = require('polygoat');
or
<script src="node_modules/polygoat/index.js"></script>
var pg = window.polygoat
// wrap an asynchronous function with polygoat
function hybridReaddir (path, callback) {
return pg(function (done) {
fs.readdir(path, done)
}, callback)
}
// hybridReaddir can be used as a promise
hybridReaddir('/').then(console.log)
// or with a callback
hybridReaddir('/', console.log)
// or with async/await via Babel
// https://ponyfoo.com/articles/understanding-javascript-async-await
async () => {
console.log('listing...')
console.log(await hybridReaddir('/'))
console.log('done')
}()
// you can also pass the Promise implementation of your choice
var bluebird = require('bluebird')
function hybridReaddir (path, callback) {
return pg(function (done) {
fs.readdir(path, done)
}, callback, bluebird)
}
hybridReaddir() instanceof bluebird // true
See example.js
See benchmark
npm install standard
npm test
Goat icon by Agne Alesiute from the Noun Project