@tarojs/components
Version:
46 lines (45 loc) • 1.28 kB
JavaScript
export function throttle(fn, threshold = 250, scope) {
let lastTime = 0;
let deferTimer;
return function (...args) {
const context = scope || this;
const now = Date.now();
if (now - lastTime > threshold) {
fn.apply(this, args);
lastTime = now;
}
else {
clearTimeout(deferTimer);
deferTimer = setTimeout(() => {
lastTime = now;
fn.apply(context, args);
}, threshold);
}
};
}
export function debounce(fn, ms = 250, scope) {
let timer;
return function (...args) {
const context = scope || this;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, ms);
};
}
export * from './helper';
export * from './style';
export * from './url';
export function isVisible(e) {
return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length);
}
export function isElement(e) {
return typeof HTMLElement === 'object'
? e instanceof HTMLElement
: e && typeof e === 'object' && e !== null && e.nodeType === 1 && typeof e.nodeName === 'string';
}
export function isNode(e) {
return typeof Node === 'object'
? e instanceof Node
: e && typeof e === 'object' && e !== null && typeof e.nodeType === 'number' && typeof e.nodeName === 'string';
}