then-callback v1.0.3
then-callback

Wrap a promise to allow passing callback to
.thenof given promise, also works as normal.then
Install
npm i then-callback --saveUsage
For more use-cases see the tests
thenCallback
Basically, you just pass a promise and it returns promise, but
.thenfrom the returned promise can accept a callback function, instead of two arguments as usual - one for result, one for error.
Notice that it also works as normal.thenif you pass two arguments.
<promise>{Promise}return{Promise}
Example
const thenCallback = require('then-callback')
const promise = Promise.resolve(123)
thenCallback(promise).then((err, res) => {
console.log('err:', err) // => null
console.log('res:', res) // => 123
})
// but also works as normal `.then`
thenCallback(promise).then((res) => {
console.log('res:', res) // => 123
}, (err) => {
console.log('err:', err)
})You just need to wrap a promise, then you can use .then as usual, or to pass callback-style function to it as first argument.
Example
const fs = require('fs')
const redolent = require('redolent')
const readFile = redolent(fs.readFile)
const thenCallback = require('then-callback')
const thenCallback = require('then-callback')
var promise = readFile('package.json', 'utf8')
promise = thenCallback(promise)
promise.then((err, res) => {
if (err) return console.error(err)
console.log(JSON.parse(res).name) //=> 'then-callback'
})Otherwise, if you pass two arguments and second is function, it will work as normal .then.
Example
const thenCallback = require('then-callback')
const NativePromise = require('native-or-another')()
// rejected promise
var promise = NativePromise.reject(new Error('foo bar'))
thenCallback(promise).then(console.log, console.error) //=> Error: foo bar
// resolved promise
var promise = NativePromise.resolve(123)
thenCallback(promise).then(console.log, console.error) //=> '123'Related
- always-promise: Promisify, 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.
- letta: Let's move to promises! Drop-in replacement for
co@4, but on steroids. Accepts sync, async and generator functions. - native-or-another: Always will expose native
Promiseif available, otherwiseBluebirdbut only if you don't give another promise module likeqorpromiseor what you want. - native-promise: Get native
Promiseor falsey value if not available.
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.