p-unique
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

p-unique

重复调用时,仅创建一次 promise,并执行其相关的副作用操作。 避免同类型的副作用重复操作,若前一次 promise 的副作用操作未执行完,仍旧处于 pending,此时重复调用也不会重新创建 promise,从而避免了执行相同的操作错误情况.

常用的业务场景

  1. 第一次请求A未响应之前,不会发起第二次请求A,也即防重复请求,比使用 axios 的cancelToken 来取消请求更好,因为并没有发起新的请求,更加符合实际的业务场景。
  2. 防止重复 setData 等

任何你想避免重复执行的逻辑,都可以使用 function 处理并返回对应的 promise,交给该库处理。

import pUnique from 'p-unique'

// vue methods
bindTap: pUnique(()=> {
  // do side effects
  return io.get('testUrl').then().catch()
})

// function
const somethingFetch = ()=> {
  const debounceFetch = pUnique(()=> {
    // do side effects
    return io.get('testUrl').then().catch()
  },
  {debouncedMilliseconds: 1000}
  )
  debounceFetch()
}

Package Sidebar

Install

npm i p-unique

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

27.7 kB

Total Files

14

Last publish

Collaborators

  • peter-parker