singleton-promise
v0.1.6
Published
promise单例化
Downloads
2
Readme
singleton-promise
promise单例化
一般场景为:用户请求相同资源时,仅发起首次请求,以达到优化请求目的。
相比缓存资源数据,该方案可在Pending状态时,阻止请求。
安装
npm i singleton-promise -save
使用
- 调用
call
方法时,传入的callback
参数,必须是同一函数引用,用于判断相同请求。
import Singleton from 'singleton-promise'
const singleton = new Singleton()
const loadEcharts = () => loadScript('https://cdn.bootcdn.net/ajax/libs/echarts/5.0.1/echarts.min.js')
singleton.call(loadEcharts).then(() => {
console.log('source loaded')
})
参数
创建实例时,可传
retry
参数,表示请求资源失败时,自动重试次数调用
call
方法时,可传name
参数,显性标识相同请求。此时callback
参数可使用任意函数。
import Singleton from 'singleton-promise'
// retry = 3。 表示请求资源失败时,自动重试3次
const singleton = new Singleton(3)
const src = 'https://cdn.bootcdn.net/ajax/libs/echarts/5.0.1/echarts.min.js'
// name = src。 显性标识相同请求
singleton.call(src, () => loadScript(src)).then(() => {
console.log('source loaded')
})
API
new Singleton(retry)
|名称|类型|默认值|描述| |-|-|-|-| |retry|Number|0|自动重试次数|
实例方法
singleton.call([name], callback)
请求资源,返回Promise
|名称|类型|默认值|描述| |-|-|-|-| |name|*|callback|可选参数,显性标识相同请求| |callback|Function|-|必填参数,请求方法|
singleton.remove(name)
从实例中移除指定请求
singleton.removeAll(name)
从实例中移除所有请求
注意
忽略
name
参数时,传入的callback
参数,必须是同一函数引用,用于判断相同请求。内部不包含 Promise 的 polyfill。如在浏览器环境使用,需要自行polyfill。