think-debounce

1.0.4 • Public • Published

think-debounce

Build Status Coverage Status npm

think-debounce runs a time-consuming operation. The operation may be called several times concurrently, but within think-debounce, it will only be run once before it's finished.

In particular, You can use think-debounce to avoid duplicate requests for a remote API.

Syntax

import Debounce from 'think-debounce';
const instance = new Debounce();
instance.debounce(key, callback);
  • key {String} the identity of the operation.
  • callback {Function} the function which contains the operation and returns a Promise object.
  • return {Object} a Promise object.

Usage

Take reading a local file for an example:

import Debounce from 'think-debounce';
import fs from 'fs';
 
let instance = new Debounce();
let readTimes = 0;
let awaitKey = 'readMyFile';
let filePath = '../my/file/path';
let readMyFileCallback = () => {
  return new Promise((resolve, reject) => {
    // even if `readMyFile` operation is called several times,
    // `readMyFileCallback` will only be run once before it's finished.
    readTimes ++;
    fs.readFile(filePath, {encoding: 'utf8'}, (err, data) => {
      if(err) reject(err);
      resolve(data);
    });
  });
}
 
let promise1 = instance.debounce(awaitKey, readMyFileCallback);
let promise2 = instance.debounce(awaitKey, readMyFileCallback);
 
return Promise.all([promise1, promise2]).then(values => {
  console.log(readTimes); // 1
});

Readme

Keywords

none

Package Sidebar

Install

npm i think-debounce

Weekly Downloads

791

Version

1.0.4

License

none

Unpacked Size

8.91 kB

Total Files

9

Last publish

Collaborators

  • lizheming
  • welefen
  • sijiecai
  • lushijie
  • berwin
  • bezos
  • toxicjohann
  • huangxiaolu