如何报告JavaScript函数的进度?

我有一个很长的 JavaScript函数并执行许多任务,我想通过使用消息更新SPAN元素的内容来向用户报告进度.我尝试在整个功能代码添加document.getElementById(‘spnProgress’).innerText = …语句.

但是,当函数执行时,UI将不会更新,因此您只能看到写入SPAN的最后一条消息,这不是很有用.

我目前的解决方案是将任务分解为多个函数,在每个函数结束时我设置SPAN消息,然后使用window.setTimeout调用以非常短的延迟(比如10ms)“触发”下一个函数.这产生控制并允许浏览器在开始下一步之前用更新的消息重新绘制SPAN.

但是我觉得这很乱,很难遵循代码,我认为必须有更好的方法.有没有人有什么建议?有没有办法强制SPAN重绘而不必离开函数的上下文?

谢谢

解决方法

你正在做的方式是正确的方式(目前,这可能会随着标准的出现而被改变并被采纳[见Andrew Aylett的 answer],但暂时还没有).你必须得到这样的结果才能允许浏览器进行UI更新.我发现我觉得这样的东西越多,清洁的东西越多,但是我做的第一次尝试确实非常“混乱”.希望你找到与你习惯相同的东西.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...