UNPKG

react-native-gp-utils

Version:

对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.

85 lines (78 loc) 3.37 kB
import CommonUtils from '../CommonUtils'; const {loop,getFuncName}=CommonUtils.normal.funcs; import RandomUtils from '../RandomUtils'; const {getRandom,getRandomStr,getRandomFromArr,getRandomFromArrWithWeight,getRandomPhone}=RandomUtils.normal.funcs; import StringUtils from '../BuiltInObjectUtils/StringUtils'; const {toUpperFirst}=StringUtils.baseOnInvadeScale.proto; /** * 获取当前调用方法的方法名,并打印(调用时logFuncName(arguments)) * @param args 要打印方法名的方法的arguments * @param otherStr 另外要打印到一起的字符串 * @param char 在方法名的左右用什么符号来标记,默认为'-',给出空字符串时不要左右的字符 * @param num 左右各多少个char字符 */ const logFuncName=(args,otherStr='',char='*',num=35)=>{ let str=new Array(num+1).join(char); console.log((otherStr&&(str+otherStr))+str+getFuncName(args)+str); }; /** * 返回一串随机的乱数假文(就和在webStorm或其他一些支持该功能的IDE中写lorem后Tab键一样) * @param wordCount 要生成的假文单词数目.(默认为30) * @returns {string} */ function getLorem(wordCount=30){ let finalArr=['Lorem','ipsum','dolor','sit','amet,','consectetur','adipisicing','elit.']; if(wordCount<=8){ finalArr=finalArr.slice(0,wordCount); }else { const loopCount=wordCount-8; // 记录当前随机到的标点符号是不是句号 let isFinalChar=true; loop(loopCount,()=>{ let randomNum=getRandom(3,13); let charArr=['',',','.'],charWightArr=[7,1,1]; let char=getRandomFromArrWithWeight(charArr,charWightArr); let randomStr=getRandomStr(randomNum,'lowChar')+char; isFinalChar&&(randomStr=toUpperFirst.call(randomStr)); finalArr.push(randomStr); isFinalChar=char==='.'; }); let finalCharArr=['.','?','!']; finalArr[finalArr.length-1]=finalArr[finalArr.length-1]+getRandomFromArr(finalCharArr); } return finalArr.join(' '); } /** * 模拟网络获取数据方法 * @param pageLen 获得数据的每一页的数据条数(默认20条) * @param page 获得数据的页数(默认第1页) * @param ms 模拟多少毫秒后可以获得网络传输的数据(默认3000毫秒:即3秒) * @param max 模拟数据库中总共有多少条数据(默认最多100条,这时如果每页20条,第5页有数据,第6页就没有数据了) * @returns {Promise} */ function getDataFromNetTest(pageLen=20,page=1,ms=3000,max=100){ let res={status:200}; let arr=[]; let startNum=pageLen*(page-1); if(startNum>=max){ }else { for (let i=1;i<=pageLen;i++){ let index=startNum+i; let a={ index:(index+100000+'').slice(1), name:toUpperFirst.call(getRandomStr(getRandom(5,9),'char')), age:getRandom(18,99), phone:getRandomPhone(), text:(index+100000+'').slice(1)+'.'+getLorem(), }; arr.push(a); if(index>=max)break; } } res.arr=arr; return new Promise((resolve,reject)=>{ setTimeout(()=>{resolve(res)},ms); }); } export default {normal:{funcs:{getLorem,logFuncName,getDataFromNetTest}}} // export default {onlyProto:{proto:{getLorem,logFuncName,getDataFromNetTest}}}