50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
export const Debounce = (fn, wait) => {
|
||
let delay = wait|| 500
|
||
let timer
|
||
return function () {
|
||
let args = arguments;
|
||
if (timer) {
|
||
clearTimeout(timer)
|
||
}
|
||
|
||
let callNow = !timer
|
||
timer = setTimeout(() => {
|
||
timer = null
|
||
}, delay)
|
||
if (callNow) fn.apply(this, args)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 处理头像/图片 URL
|
||
* @param {String} url 图片路径
|
||
* @param {String} baseUrl 基础路径
|
||
* @param {String} defaultUrl 默认图片路径
|
||
*/
|
||
export const getHeadImgUrl = (url, baseUrl, defaultUrl = "/static/common/images/avatar_default2.png") => {
|
||
if (!url) return defaultUrl;
|
||
if (url.startsWith('http') || url.startsWith('https') || url.startsWith('blob:')) return url;
|
||
|
||
// 统一处理反斜杠:将所有的 \ 替换为 /
|
||
let cleanUrl = url.replace(/\\/g, '/');
|
||
|
||
// 处理 baseUrl: 替换反斜杠并去除末尾斜杠
|
||
let cleanBaseUrl = '';
|
||
if (baseUrl) {
|
||
cleanBaseUrl = baseUrl.replace(/\\/g, '/').replace(/\/$/, '');
|
||
}
|
||
|
||
// 情况三:headSculptureUrl = "/UploadImages/tx.jpg"
|
||
if (cleanUrl.startsWith('/')) {
|
||
return cleanBaseUrl + cleanUrl;
|
||
}
|
||
|
||
// 情况二:headSculptureUrl = "UploadImages/tx.jpg"
|
||
if (cleanUrl.includes('/')) {
|
||
return cleanBaseUrl + '/' + cleanUrl;
|
||
}
|
||
|
||
// 情况一:headSculptureUrl = "tx.jpg"
|
||
return cleanBaseUrl + '/UploadImages/' + cleanUrl;
|
||
}
|