https://github.com/zoubin/node-promisify
convert callback function to node native promise
https://github.com/zoubin/node-promisify
Last synced: about 1 month ago
JSON representation
convert callback function to node native promise
- Host: GitHub
- URL: https://github.com/zoubin/node-promisify
- Owner: zoubin
- Created: 2015-05-24T02:13:01.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-12-09T17:01:06.000Z (over 10 years ago)
- Last Synced: 2025-12-29T10:58:10.444Z (6 months ago)
- Language: JavaScript
- Size: 17.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
Awesome Lists containing this project
README
# node-promisify
[](https://www.npmjs.org/package/node-promisify)
[](https://travis-ci.org/zoubin/node-promisify)
[](https://david-dm.org/zoubin/node-promisify)
[](https://david-dm.org/zoubin/node-promisify#info=devDependencies)
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
```javascript
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`.