Javascript 如何在方法运行时更新DOM?

Javascript 如何在方法运行时更新DOM?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我正在编写一个在客户端工作的简单工具。基本上,用户带来一个文件,按下一个按钮启动它,它会处理它(大约需要10-15秒),然后它会返回修改过的文件 不幸的是,只要他们按下按钮启动该方法,DOM就不会更新,直到该方法完成,所以在它全部完成之前没有反馈,这非常令人沮丧 在模板部分,我有: 处理数据… “processingStatus”变量默认设置为0 在方法中,它是“processData”,当按下按钮时被调用,它以 this.processingStatus = 1 然后继续处理数据 不幸的是,

我正在编写一个在客户端工作的简单工具。基本上,用户带来一个文件,按下一个按钮启动它,它会处理它(大约需要10-15秒),然后它会返回修改过的文件

不幸的是,只要他们按下按钮启动该方法,DOM就不会更新,直到该方法完成,所以在它全部完成之前没有反馈,这非常令人沮丧

在模板部分,我有:

处理数据…

“processingStatus”变量默认设置为0

在方法中,它是“processData”,当按下按钮时被调用,它以

this.processingStatus = 1
然后继续处理数据


不幸的是,“处理数据…”标记在方法完成之前不会显示。如何在方法运行时强制VueJS呈现DOM?

根据您所说的
processData
正在做的事情(在数组中遍历一组数据),我猜它不是异步运行的,而是在完成之前锁定javascript线程

您需要做的是在
processData
中设置与您一样的is processing变量,然后在promise或其他机制中执行所有实际工作,以释放控制并更新UI

你也可以打个电话

vm.$forceUpdate()


在开始所有数组工作之前。

processData做什么?它通过一个巨大的数组,在另一个数组中搜索该数组中的元素,如果找到它们,则删除它们。这都是客户端的问题。我猜您正在更改
processingStatus
内部
if
的值,该值具有不同的范围。如果我在函数内部但在任何if语句外部为
this
创建一个变量,这对我来说是很好的。作为参考,我没有在setTimeout函数中运行。这样做修复了它,谢谢!