Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/uzitech/promisificator
Returns a promise and a callback that will fullfill the promise.
https://github.com/uzitech/promisificator
Last synced: 19 days ago
JSON representation
Returns a promise and a callback that will fullfill the promise.
- Host: GitHub
- URL: https://github.com/uzitech/promisificator
- Owner: UziTech
- License: mit
- Created: 2016-06-22T20:26:38.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-09T09:58:59.000Z (about 1 month ago)
- Last Synced: 2024-10-15T12:18:39.497Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/promisificator
- Size: 1.93 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[![Actions Status](https://github.com/UziTech/promisificator/workflows/CI/badge.svg)](https://github.com/UziTech/promisificator/actions)
# promisificator
Returns a `promise` and a `callback` that will fulfill the `promise`.
## Examples
#### 1. Use the callback in an async function to resolve the promise
```javascript
const fs = require("fs");
const promisificator = require("promisificator");const {
promise,
callback,
} = promisificator({rejectOnError: true});//`callback` can be passed to any async function that takes a callback
fs.readFile("/etc/password", callback);//`promise` will be fulfilled once the callback is called
promise.then((data) => {
console.log(data);
}, (err) => {
throw err;
});
```#### 2. Allow a function to accept a callback or return a promise
```javascript
const promisificator = require("promisificator");function myFunc(arg, cb) {
const {
promise,
callback,
} = promisificator(cb);// `cb` will be wrapped in `process.nextTick` so it won't be
// called immediately if it is a callback
callback(null, arg);// if `cb` is a function `promise` will be undefined
return promise;
}myFunc("promise").then(console.log, console.error);
myFunc("callback", (err, result) => {
if (err) {
return console.error(err);
}
console.log(result);
});
```#### 3. Turn a callback function into a promise
```javascript
const fs = require("fs");
const { promisify } = require("promisificator");//`promisify(fs.readFile)` will return a function that returns a promise
promisify(fs.readFile, {callbackArg: -1})("/etc/password").then((data) => {
console.log(data);
}, (err) => {
throw err;
});
```## Options
#### rejectOnError
Default: `true`
Reject the promise if the first argument of the callback is truthy.
#### alwaysReturnArray
Default: `false`
Resolve the promise with an array of values if there is only one argument.
By default Promisificator will return an array only if there is more than one non-error argument sent to the callback.
#### useNextTick
Default: `true`
If a callback is provided use [`process.nextTick`](https://nodejs.org/api/process.html#process_process_nexttick_callback_args) when calling the callback to ensure that it is called asynchronously.
If this is set to `false` the callback can be called before the function returns, which might lead to unexpected results.
#### callbackArg
Default: `-1`
The argument index to place the callback for `promisify`.
Negative values will be from the end of the function arguments. Positive values start at 0.