我正在尝试实现一个与javascript中的promise一起使用的去抖函数.这样,每个调用者都可以使用Promise消耗"debounced"函数的结果.这是迄今为止我能够提出的最好的:
function debounce(inner, ms = 0) {
let timer = null;
let promise = null;
const events = new EventEmitter(); // do I really need this?
return function (...args) {
if (timer == null) {
promise = new Promise(resolve => {
events.once('done', resolve);
});
} else {
clearTimeout(timer);
}
timer = setTimeout(() => {
events.emit('done', inner(...args));
timer = null;
}, ms);
return promise;
};
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想实现这个实用程序函数而不引入依赖于EventEmitter(或实现我自己的基本版本的EventEmitter),但我想不出办法.有什么想法吗?
我List在react-virtualized中使用一个组件来渲染大量项目.在我的实现中,项目是分段的,我希望部分标题是粘性的,以便当用户向下滚动时当前部分保持可见.从本质上讲,我需要react-virtualized NOT来销毁部分标题,因为滚动位置会发生变化(但会继续破坏其他项目).现在有办法做到这一点吗?只要他们不是太疯狂,我就会对黑客持开放态度.