Home

Awesome

always-callback npmjs.com The MIT License

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.

code climate standard code style travis build status coverage status dependency status

Install

npm i always-callback --save
npm test

Usage

For more use-cases see the tests

It is useful for control-flow and hybrid APIs

Example

var fs = require('fs')
var alwaysCallback = require('always-callback')

// if sync function given, transform it to async
var parse = alwaysCallback(JSON.parse)
var stringify = alwaysCallback(JSON.stringify)
var readFile = alwaysCallback(fs.readFileSync)

// if asynchronous function given, it remains async
var statFile = alwaysCallback(fs.stat)

parse('{"foo":"bar"}', function (err, res) {
  console.log(err) //=> null
  console.log(res) //=> { foo: 'bar' }
})

stringify({foo: 'bar', baz: 'qux'}, null, 2, function (err, res) {
  //=> it would prettify and stringify json
  console.log(err) //=> null
  console.log(res)
  //=> {
  //   "foo": "bar",
  //   "baz": "qux"
  // }
})

readFile('./package.json', 'utf8', function (err, res) {
  console.log(err) //=> null
  console.log(res) //=> { name: 'always-callback', ... }
})

statFile('./package.json', function (err, res) {
  console.log(err) //=> null
  console.log(res) //=> { dev: 64770, mode: 33204, ... }
})

Related

Contributing

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.

Charlike Make Reagent new message to charlike freenode #charlike

tunnckocore.tk keybase tunnckocore tunnckoCore npm tunnckoCore twitter tunnckoCore github