|
|
|
@ -1,11 +1,14 @@ |
|
|
|
const _promiseThrottleMap = {}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 节流函数 |
|
|
|
* @description 本函数接收一个Promise,当Promise在pending状态中,会自动阻止下次继续触发,在finally后释放。同时允许传入一个时限,如果达到时限Promise还未finally,会执行onTime回调 |
|
|
|
* @description 本函数接收一个Promise,当Promise在pending状态中,会自动阻止下次继续触发,在finally后释放。 |
|
|
|
* 同时允许传入一个时限,如果达到时限Promise还未finally,会执行onTime回调 |
|
|
|
* @param {string|number} promise_id 节流ID,同ID的内部节流,不同ID的互不干扰 |
|
|
|
* @param {Function} promiseFunction 要节流的Promise函数,该函数应该返回一个Promise |
|
|
|
* @param {number} time x毫秒后触发onTime,如果在此之前Promise已经finally,则不执行onTime |
|
|
|
* @param {Function} promiseFunction 要节流的Promise函数,该函数应该返回一个Promise |
|
|
|
* @param {Function} onTime 事件 |
|
|
|
* @returns |
|
|
|
* @returns {Promise} 节流后的Promise |
|
|
|
*/ |
|
|
|
export function promiseThrottle(promise_id, time = 500, promiseFunction, onTime) { |
|
|
|
if (_promiseThrottleMap[promise_id] === true) |
|
|
|
@ -21,7 +24,6 @@ export function promiseThrottle(promise_id, time = 500, promiseFunction, onTime) |
|
|
|
clearTimeout(timeout); |
|
|
|
}); |
|
|
|
} |
|
|
|
let _promiseThrottleMap = {}; |
|
|
|
|
|
|
|
/** |
|
|
|
* status 状态栏 | menu 小程序胶囊 | screen 屏幕 |
|
|
|
@ -61,7 +63,7 @@ export function useHeight() { |
|
|
|
/** |
|
|
|
* 通过类或者id 获取元素高度 |
|
|
|
* @param {string} idOrClass |
|
|
|
* @returns {Promise{number}} |
|
|
|
* @returns {Promise{number}} 元素高度 |
|
|
|
*/ |
|
|
|
export function getHeight(idOrClass) { |
|
|
|
return new Promise((resolve) => { |
|
|
|
@ -95,3 +97,26 @@ export function gotoBack() { |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验器 |
|
|
|
* @example |
|
|
|
* const validators = [ |
|
|
|
* () => name || "请输入姓名", |
|
|
|
* () => !email && "请输入邮箱", // && if true: return msge
|
|
|
|
* ]; |
|
|
|
* validates(validators); |
|
|
|
* @param {Array<Function>|Function} validators 校验函数数组,每个函数返回校验错误信息或空字符串 |
|
|
|
* @param {boolean} returnBoolean 是否返回布尔值,默认返回字符串 |
|
|
|
* @returns {string|boolean} 校验错误信息或空字符串 |
|
|
|
*/ |
|
|
|
export function validates(validators, returnBoolean = true) { |
|
|
|
for (const callback of [validators].flat()) { |
|
|
|
const msg = callback(); |
|
|
|
if (msg) { |
|
|
|
uni.showToast({ title: msg }); |
|
|
|
return returnBoolean ? false : msg; |
|
|
|
} |
|
|
|
} |
|
|
|
return returnBoolean ? true : ""; |
|
|
|
} |