@sagacious/utils
v0.0.13
Published
常用工具类
Downloads
5
Readme
常用工具类
相关信息
更新日志
- 2019-09-29 ObjectUtils类 - removeEmpty API 新增处理后值配置项,优化MathUtils类
- 2019-09-27 新增MathUtils类
- 2019-09-25 新增OrderQuene类
- 2019-09-26 OrderQuene类新增stop,clear方法
- more...
API
ObjectUtils
操作对象工具类
1. init (target: Object): ObjectUtils 初始化工具类
2. val (): ObjectTarget 获取处理后的值
3. removeEmpty (): ObjectUtils 去除对象中的非零不规范数据
type ObjectUtilsRemoveOptions = {
/**
* 处理后的值
*/
targetVal?: any;
/**
* 元素为数组的key
*/
arrayKeys?: string[];
/**
* 数组处理后的值
*/
arrayVal?: any[];
/**
* 对象为数组时是否处理,默认为true
*/
operateArray?: boolean;
};
4. static removeEmpty(target) 静态方法 去除对象中的非零不规范数据
MathUtils
数学工具类
1. init (target: number): MathUtils 初始化工具类
2. val (): number 获取处理后的值
3. evaluate (formula: string): MathUtils 执行数学公式
OrderQuene
顺序队列
1. init (quene: OrderQueneElement[], options: OrderQueneOptions): OrderQuene 初始化order quene,返回值:元素队列
2. push (...quene: OrderQueneElement[]): this 往队列里添加元素
3. start (data: any): void 开始执行队列
4. stop (): void 停止执行队列,在元素stop回调执行完毕后停止
4. clear (): OrderQueneElement[] 清空执行队列,在元素stop回调执行完毕后停止,返回值:未执行元素队列
规则
延时顺序执行(delay),最后一个元素延时更久执行(endDelay),未执行end回调时有元素推入,1). time < delay,到达delay执行. 2). delay < time < endDelay, 立即执行
数据类型
/**
* 队列元素
*/
type OrderQueneElement = {
/**
* 开始执行回调
*/
start?: (...args: any[]) => Promise<any>
/**
* 结束执行回调
*/
end?: (...args: any[]) => Promise<any>
/**
* 延迟时间
*/
delay?: number
/**
* 最后一个元素延迟时间
*/
endDelay?: number
}
/**
* 公共配置
*/
type OrderQueneOptions = {
/**
* 延迟时间
*/
delay?: number
/**
* 最后一个元素延迟时间
*/
endDelay?: number
}
/**
* 默认配置
*/
private options: OrderQueneOptions = {
delay: 1000 * 2,
endDelay: 1000 * 5,
}
案例
// 初始化队列
let x = OrderQuene.init([
{
start () {
console.log('start1')
},
end () {
console.log('end1')
},
},
{
start () {
console.log('start2')
},
end () {
console.log('end2')
},
},
{
start () {
console.log('start3')
},
end () {
console.log('end3')
},
},
])
// 开始执行
x.start()
// 模拟中间插入,等待执行
setTimeout(() => {
x.push({
start () {
console.log('start4')
},
end () {
console.log('end4')
},
})
}, 7000)
// 模拟中间插入,立即执行
setTimeout(() => {
x.push({
start () {
console.log('start4')
},
end () {
console.log('end4')
},
})
}, 9000)