Thunkify, basically, everything. Generator function, callback-style or synchronous function; sync function that returns child process, stream or observable; directly passed promise, stream or child process.
npm i always-thunk --save
npm test
For more use-cases see the tests
var fs = require('fs')
var alwaysThunk = require('always-thunk')
var readFile = alwaysThunk(fs.readFile)
readFile('./package.json', 'utf8')(function (err, res) {
console.log(err) //=> null
console.log(res) //=> package.json content
})
var readFileSync = alwaysThunk(fs.readFileSync)
readFileSync('./package.json', 'utf8')(function (err, res) {
console.log(err) //=> null
console.log(res) //=> package.json content
})
- always-promise: Create Bluebird Promise from given async or synchronous function. It automatically convert sync functions to async, then to promise.
- always-callback: Create callback api for given sync function. Guarantee that given function (sync or async, no matter) will always have callback api and will handle errors correctly.
- handle-callback: Make promise to have support for callback api, it returns promise in that same time.
- make-callback: Make synchronous function to support callback api
- promise2thunk: Convert (transform) promise to thunk, just like was in co@3
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.