import dayjs from "dayjs"; import Api from "../model/api"; /** * 节流函数 * @param {Function} callback 需要被节流的函数 * @param {Number} duration 距离上次执行超过多少毫秒才会执行被节流的函数 * @returns */ function throttle(callback, duration = 500) { // 最后执行函数时的时间戳 let lastTime = 0 return function () { // 获取当前时间戳 const now = new Date().getTime() console.log(`上次时间:${lastTime} 这次时间${now} 时间差${now - lastTime}`) // 判断当前时间距离上一次执行函数的时间是否超过了duration设定的毫秒数 if (now - lastTime >= duration) { // 超过了 // 因为我们需要在 page 中做 this.setData(),所以需要借助 call() // 利用 call()方法,实现保留原函数的 this 指向,利用JavaScript的arguments对象实现动态接收参数 callback.call(this, ...arguments); // callback(...arguments) // 更新最后执行函数时的时间戳 lastTime = now; console.log("执行throttle") } // 没超过,啥也不干 } } /** * 获取事件回调参数的自定义属性 * @param {Object} event * @param {String} target */ function getDataSet(event, target) { if (target) { return event.currentTarget.dataset[target] } else { return event.currentTarget.dataset } } /** * 获取自定义组件事件参数 * @param {Object} event * @param {String} target * @returns {*} */ function getEventParam(event, target) { if (target) { return event.detail[target] } else { return event.detail } } /** * 吐司 * @param msg */ function toast(msg) { wx.showToast({ title: msg, icon: 'none' }) } /** * 显示加载框 * @param msg */ function showLoading(msg) { if (msg == undefined) { msg = '加载中...' } wx.showLoading({ title: msg, mask: true }); } /** * 判断是否手机 * @param phone * @returns {boolean} */ function isMobile(phone) { if (!phone.trim()) { return false; } const reg = /^1[0-9]{10}$/; if (!reg.test(phone)) { return false } return true } /** * 随机生成uuid - 引入时间戳 (36位字符串) * @returns {string} */ function getUuid() { let d = new Date().getTime(); return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { const r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); }); } /** * 是否数字 * @param value * @returns {boolean} */ function isNumber(value) { return typeof value === 'number' && !isNaN(value); } /** * 格式化标准时间 YYYY-MM-DD HH:mm:ss * @param str * @returns {string} */ function formatTime(str) { return dayjs(str).format("YYYY-MM-DD HH:mm:ss") } /** * 格式化日月年 YYYY-MM-DD YYYY年MM月DD日 * @param str * @returns {string} */ function formatYMD(str) { return dayjs(str).format("YYYY-MM-DD") } function formatYMD2(str) { return dayjs(str).format("YYYY年MM月DD日") } /** * 处理小程序richtext 显示图片自适应问题 * @param content * @returns {*} */ function handleRichTextImgAuto(content) { return content.replace(/\