guji
This repository will provide some simple but useful function as lodash
The best advantage is the cute name.
use
- install
npm install guji -S
- use
each api in single file. to use like arrToObj
const obj = // {key1: "value1", key2: "value2"}
源码使用,让guji的源代码走babel编译。非node环境建议源码使用
// webpack.config.jsconst guji = const config = {} // configmoduleexports =
api list
- arrToObj
declare
数组转对象
// {key1: "value1", key2: "value2"}
- cache
declare
缓存请求, 缓存计算;可配置keyFn按不同参数缓存;reject可清除缓存
var fibonacci = // 如果不用缓存,计算量会很大,很耗时
- callLimit
declare
限制调用次数;超过的次数有错误回调,默认会console.log,可以上报自定义错误等操作
const init = // log do init // log init extra call 2
- event
declare declare
createEvent,轻量级的事件处理。makeEvent,可用于对类似window.onerror的转化,转化成可以使用onError, onceError, offError等函数,解决多个地方想监听onerror的场景
windowwindow // 控制台中直接写throw new Error()不触发onerror// log 1 error// log 2 error
- firstUppercase
首字母大写
- funSlice
declare ;declare ;
给函数调用增加前置或后置操作
const component = { console } { console }component// log beforeRender// log render// log afterRender
- getDefer
declare
增加超时reject,不传msReject则不做超时处理
- getType {getType, isType}
declare declare
使用Object.prototype.toString.call判断数据类型
// Number // Number // Array Undefined// isType会进行toLowerCase再做比较 // true
- logResult
declare
对结果处理,默认log
- logTime
declare
统计函数执行事件,如果返回promise,会统计到promise状态变更的事件。拿到时间可以在回调中上报等操作,做性能统计,默认是log出来。如果不是计算函数的耗时,可以用timer,可以统计函数内某些操作的耗时,类似console.time的用法
const request = // log request 102
- objToArr
declare
对象转数组,fn不传时等于Object.values
// [ { key: 'key1', value: 'value1' }, { key: 'key2', value: 'value2' } ]
- rateLimit
限制并发执行的次数
const data = {} { await datapage = 1}const arr = Array// tasks是数组let tasks = arr// tasks是函数,有时候远程获取数据// let tasks = function () {// return arr.shift()// }// tasks迭代器// let tasks = arr[Symbol.iterator]()
- ready {emitReady, onReady, isReady}
declare declare declare 很实用的API,目前event全局维护,需要可以配合命名空间实用 ```javascriptimport {emitReady, onReady} from 'guji/src/ready'function getUserInfo() { const userInfo = {} // getUserInfo emitReady('global.userInfo', userInfo)} async function getTableData() { const userInfo = await onReady('global.userInfo') // to getTableData}
- ReconnectSocket
socket,断线自动重连
- refresh
declare
重复获取数据,如搜索情况和翻页情况。应该会加debounce,但还是有情况会连续发请求,如果先发的请求后到,数据是不对的。使用refresh确保你使用的最新的数据,如果后发的请求已经结束,之前的请求就算成功了,也会reject
const table = data: 0const getData = const setTableData = async { try tabledata = await catch e console } // log data has expired// log 2// 去掉refresh,最后得到的table.data为1,是不符合预期的
- retry
declare
失败自动重试,可以设置次数,每次错误都有回调,可以做用户提醒
- safeFun
对函数加一层try/catch
- safeObj
对象中的所有函数加一层try/catch,没有做递归处理
- safeParse
declare
对parse操作加try/catch,对于失败的操作,可以设置默认返回值
- sleep
declare
多线程可以让线程休眠,但是这里不是哦。配合async/await使用体验更好
{ // do A await // do B}
- timeout
declare
对函数或者promise做超时处理
- timer
declare
统计时间差,和console.time、console.timeEnd的差别是不用key做标记,上层函数可以重复连续调用,可以得到时间做下一步操作
{ // do A const timerEnd = // do B await }// log request-a: 35[0-100]// log request-b: 82[0-100]
LICENSE
MIT License