p-unique
Version:
repeated invoke will create the unique promise or an pending promise
30 lines (25 loc) • 1.07 kB
Markdown
# p-unique
> 重复调用时,仅创建一次 promise,并执行其相关的副作用操作。
>避免同类型的副作用重复操作,若前一次 promise 的副作用操作未执行完,仍旧处于 pending,此时重复调用也不会重新创建 promise,从而避免了执行相同的操作错误情况.
## 常用的业务场景
1. 第一次请求A未响应之前,不会发起第二次请求A,也即防重复请求,比使用 axios 的cancelToken 来取消请求更好,因为并没有发起新的请求,更加符合实际的业务场景。
2. 防止重复 setData 等
> 任何你想避免重复执行的逻辑,都可以使用 function 处理并返回对应的 promise,交给该库处理。
```ts
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()
}
```