Package Exports
- node-promisify
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-promisify) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
node-promisify
Convert a callback-based api to one that returns a promise.
NOTE:
- Own properties are preserved. But other inherited properties such as
name
,length
,toString
, do not preserve. - Custom promise can be used instead of the native. But no polyfill is applied when your node version does not support promise.
- Multiple values can be resolved when the
argc
option is specified.
Example
var promisify = require('../')
function async(a, b, c, d, cb) {
process.nextTick(function () {
cb(null, a + b, a + b + c, a + b + c + d)
})
}
async.sync = function (a, b) {
return a + b
}
var promisified = promisify(async)
console.log('Sync sum:', promisified.sync(1, 2))
promisified(1, 2, 3, 4)
.then(function (sum) {
console.log('Async sum:', sum)
})
promisify(async, 2)(1, 2, 3, 4)
.then(function (sums) {
console.log('Two sums:', sums)
})
promisify(async, -1)(1, 2, 3, 4)
.then(function (sums) {
console.log('All sums:', sums)
})
output:
⌘ node example/sums.js
Sync sum: 3
Async sum: 3
Two sums: [ 3, 6 ]
All sums: [ 3, 6, 10 ]
pfn = promisify(fn, opts)
Return a new function which returns a promise.
Sugar: pfn = promisify(fn, argc)
, pfn = promisify(fn, promise)
fn
The async function to be promisified.
Type: Function
Signature: fn(arg1, arg2, ..., done)
opts
promise
Specify a custom promise constructor.
Type: Function
argc
Specify the number of values to be resolved.
Type: Number
Default: null
When specified, the returned promise always resolve to an array.
If not specified, only the first value is resolved.
To resolve all possible values, specify a negative argc
.