在JavaScript中设置游标,用于长时间的同步操作

Set the cursor in JavaScript for a long synchronous operation

本文关键字:用于 长时间 同步操作 游标 JavaScript 设置      更新时间:2023-09-26

我试图设置一个全局页面光标(使用cursor: wait !important;document.body)在一个长期运行的同步 XmlHttpRequest(同步吮吮我知道,但让我们不要担心,现在)的开始,但是浏览器(在Chrome测试)不更新光标,直到控制从脚本返回,这不会发生,直到长时间运行的操作结束。

它非常适合异步xmlhttprequest(因此将同步的迁移为异步的显然是一个解决方案)。

有没有办法让浏览器刷新光标而不中断当前的同步操作?

正如上面Teemu所评论的那样,你必须延迟函数的执行,即使是0毫秒(这会将它调度到事件循环的下一个tick,让浏览器有机会在开始之前更新UI):

// change cursor
document.body.style.cursor = "wait !important";
// call long-running function from setTimeout
setTimeout(longRunningFunction, 0);

这是我知道的唯一解决方案,但它可能不适合你,因为你说"现在很多逻辑都是在假设它是同步的情况下编写的",因为你将有效地使它异步启动。