我有以下事件监听器
button.addEventListener('click', function(){
this.classList.add('disabled');
aFunctionThatTakesLongToExecute();
});
问题是,与 aFunctionThatTakesLongToExecute 的执行完成后,与新添加的按钮类相关联的屏幕上的重绘会发生,这会产生口吃的用户体验。
即使javascript函数正在执行,有没有办法强制重绘?
答案 0 :(得分:1)
我不太了解您所描述的行为,但您可以像这样包装您的函数调用:
setTimeout(aFunctionThatTakesLongToExecute);
基本上,它会异步和立即调用您的方法,因为setTimeout
第二个参数未设置(通常是执行前的时间,以毫秒为单位)。
请注意,如果aFunctionThatTakesLongToExecute
不接受任何参数,则此语法有效。否则,你必须将函数调用包装在另一个(匿名)函数中,并将这个新函数赋予setTimeout指令,如下所示:
setTimeout(() => {
aFunctionThatTakesLongToExecute(yourParameter);
});
这是指向文档的链接:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout