You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.4 KiB
66 lines
1.4 KiB
2 years ago
|
# @gar/promisify
|
||
|
|
||
|
### Promisify an entire object or class instance
|
||
|
|
||
|
This module leverages es6 Proxy and Reflect to promisify every function in an
|
||
|
object or class instance.
|
||
|
|
||
|
It assumes the callback that the function is expecting is the last
|
||
|
parameter, and that it is an error-first callback with only one value,
|
||
|
i.e. `(err, value) => ...`. This mirrors node's `util.promisify` method.
|
||
|
|
||
|
In order that you can use it as a one-stop-shop for all your promisify
|
||
|
needs, you can also pass it a function. That function will be
|
||
|
promisified as normal using node's built-in `util.promisify` method.
|
||
|
|
||
|
[node's custom promisified
|
||
|
functions](https://nodejs.org/api/util.html#util_custom_promisified_functions)
|
||
|
will also be mirrored, further allowing this to be a drop-in replacement
|
||
|
for the built-in `util.promisify`.
|
||
|
|
||
|
### Examples
|
||
|
|
||
|
Promisify an entire object
|
||
|
|
||
|
```javascript
|
||
|
|
||
|
const promisify = require('@gar/promisify')
|
||
|
|
||
|
class Foo {
|
||
|
constructor (attr) {
|
||
|
this.attr = attr
|
||
|
}
|
||
|
|
||
|
double (input, cb) {
|
||
|
cb(null, input * 2)
|
||
|
}
|
||
|
|
||
|
const foo = new Foo('baz')
|
||
|
const promisified = promisify(foo)
|
||
|
|
||
|
console.log(promisified.attr)
|
||
|
console.log(await promisified.double(1024))
|
||
|
```
|
||
|
|
||
|
Promisify a function
|
||
|
|
||
|
```javascript
|
||
|
|
||
|
const promisify = require('@gar/promisify')
|
||
|
|
||
|
function foo (a, cb) {
|
||
|
if (a !== 'bad') {
|
||
|
return cb(null, 'ok')
|
||
|
}
|
||
|
return cb('not ok')
|
||
|
}
|
||
|
|
||
|
const promisified = promisify(foo)
|
||
|
|
||
|
// This will resolve to 'ok'
|
||
|
promisified('good')
|
||
|
|
||
|
// this will reject
|
||
|
promisified('bad')
|
||
|
```
|