Vuejs2 在执行阻止操作之前,在Vue异步监视中触发重新渲染

Vuejs2 在执行阻止操作之前,在Vue异步监视中触发重新渲染,vuejs2,Vuejs2,我有一个异步手表,可以从服务器获取一些数据。它将在阻塞操作中批处理响应。我试图在开始阻塞操作之前更新视图,如下所示: Vue.component("foo-bar", { ... watch: { async things() { const response = await API.getThings(); this.someUIMessage = `processing ${response.

我有一个异步手表,可以从服务器获取一些数据。它将在阻塞操作中批处理响应。我试图在开始阻塞操作之前更新视图,如下所示:

Vue.component("foo-bar", {
    ...
    watch: {
        async things() {
            const response = await API.getThings();
            this.someUIMessage = `processing ${response.length} things...`;
            someBlockingOperation(response);
        }
    }
}
但是
this.someUIMessage
someBlockingOperation
之后才会在视图中更新。我在设置字符串和调用阻塞操作之间插入了一个
wait Vue.nextTick()
,并且
this.$forceUpdate()
,但没有成功


起作用的(有时!取决于应用程序中的其他情况)是调用
setTimeout(()=>someBlockingOperation(response),0)
,但这似乎是一个难题。是否有我遗漏的步骤?

您可能需要显示更多的代码,因为您的用例在文档中有详细描述,并且
等待Vue。nextTick()
应该可以工作

如果您的
someBlockingOperation
花费的时间太长,可能值得考虑UI响应性,并可能应用一种策略,将工作负载分成更小的块,一次只处理一个,然后使用
setTimeout(nextBatch,0)
来安排“下一个块”处理。有关更多详细信息,请参见…

是,已修复(仅代码段中有一个输入错误,实际代码中有
wait