0.4.0 • Published 4 years ago

interval-call v0.4.0

Weekly downloads
9
License
MIT
Repository
github
Last release
4 years ago

interval-call

interval-call is a function that returns a function that prevents the same function called repeatedly within a certain interval time.

Install

npm i interval-call

Usage

const intervalCall = require('interval-call').default
// import intervalCall from 'interval-call'

let flag = 0
const inc = () => {
  flag = flag + 1
}
const inc20 = intervalCall(20)(inc) // inc20 will never be called repeatedly within 20ms

inc20() // increase flag +1
setTimeout(() => {
  inc20() // this call is skipped called within 20ms
  console.log(flag) // will print 1 as flag value
}, 10)

useRootContext option

useRootContext is whether sharing context

default: false
const intervalCall = require('interval-call').default

let flag = 0

const addOne = () => {
  flag = flag + 1
}
const addTwo = () => {
  flag = flag + 2
}

/*
 * intervalInc1, intervalInc2 is works Independently
 */
const interval100 = intervalCall(100)
const interval100addOne = interval100(addOne)
const interval100addTwo = interval100(addTwo)
interval100addOne() // call immediateley
interval100addTwo() // call immediateley
console.log(flag) // print 3

flag = 0
/*
 * intervalInc1, intervalInc2 share the context when 2nd parameter is true
 */

const interval200 = intervalCall(200, { useRootContext: true })
const interval200addOne = interval200(addOne)
const interval200addTwo = interval200(addTwo)

interval200addOne() // call immediateley
interval200addTwo() // ignore call
console.log(flag) // print 1

logCancelMessage option

logCancelMessage is whether to print cancel message or not

default: false
const fn = () => 'hello'
const fn2 = intervalCall(20, { logCancelMessage: true })(fn)
fn2() // return 'hello'
fn2() // canceled, and printed console log '`inc` is canceled by intervalCall`'

debounce

Make a function called only the last once when the function is called continuously

const { debounce } = require('interval-call')

let count = 0
let inc = () => {
  count++
}
inc = debounce(inc, 50)
inc()
console.log(count) // print 0
inc()
console.log(count) // print 0
setTimeout(() => {
  console.log(count) // print 1
}, 100)

3rd parameter make the function called immediately first

const { debounce } = require('interval-call')

let count = 0
let inc = () => {
  count++
}
inc = debounce(inc, 50, true)
inc()
console.log(count) // print 1
inc()
console.log(count) // print 1
setTimeout(() => {
  console.log(count) // print 2
}, 100)
0.4.0

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago

0.0.8

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.3

4 years ago

0.0.1

4 years ago