pause-methods
Version:
Pause/resume execution of an object's methods
93 lines (63 loc) • 2.3 kB
Markdown
# pause-methods
[](https://www.npmjs.com/package/pause-methods)
[](https://travis-ci.com/shinnn/pause-methods)
[](https://codecov.io/gh/shinnn/pause-methods)
A [Node.js](https://nodejs.org/) module to pause/resume execution of the object's methods
```javascript
const {pause, resume} = require('pause-methods');
const obj = {
methodA() {
process.stdout.write('hello');
},
methodB() {
process.stdout.write('world');
}
};
const pausedObj = pause(obj);
pausedObj.methodA(); // prints nothing
pausedObj.methodB(); // prints nothing
resume(pausedObj); // prints 'hello' and 'world'
```
## Installation
[Use](https://docs.npmjs.com/cli/install) [npm](https://docs.npmjs.com/about-npm/).
```
npm install pause-methods
```
## API
```javascript
const pauseMethods = require('pause-methods');
```
### pauseMethods(*obj*)
*obj*: `Object`
Return: `Object` (a reference to *obj*)
It makes *obj*'s [enumerable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties) `Function` properties do nothing and return `undefined`.
```javascript
let num = 0;
const obj = {countUp: () => ++num};
obj.countUp(); //=> 1
num; //=> 1
const pausedObj = pauseFn(obj);
pausedObj.countUp(); //=> undefined, not 2
num; //=> 1, not 2
pausedObj.countUp(); //=> undefined
pausedObj.countUp(); //=> undefined
pausedObj.countUp(); //=> undefined
// ...
num; //=> 1
```
### pauseMethods.pause(*obj*)
An alias of [`pauseMethods()`](#pausemethodsobj).
### pauseMethods.resume(*obj*)
*obj*: `Object` returned by [`pauseMethods()`](#pausemethodsobj)
Return: `Object` (a reference to *obj*)
It restores the original functionality of the paused methods, calls it with each arguments passed while paused.
```javascript
const pausedFs = pauseMethods(fs.promises);
(async () => {
await pausedFs.writeFile('./a', 'foo'); // ./a is not created here
await pausedFs.mkdir('./b'); // ./b is not created here
pauseFs.resume(); // ./a and ./b are created here
})();
```
## License
[ISC License](./LICENSE) © 2019 Shinnosuke Watanabe