Vuetify v-progress-linear(不确定)不更新



我已经为此工作了几个小时,但找不到解决方案:

对于长时间运行的任务,我使用一个简单的 vuetify v 对话框,包括一个 v-progress-linear 条来向用户提供一些视觉反馈。由于任务的持续时间未知,我使用的进度条不确定如下:

<v-dialog
v-model="dialog"
persistent
min-width="350"
max-width="600"
hide-overlay
>
<v-card>
<v-card-title class="headline grey lighten-2">
{{ title }}
</v-card-title>
<v-card-text>
<p></p>
<h3>{{ message }}</h3>
</v-card-text>
<v-spacer></v-spacer>
<v-card-actions>
<v-spacer></v-spacer>
<v-progress-linear
indeterminate
color="blue"
class="mb-0"
width="100%"
/>
</v-card-actions>
</v-card>
<v-card> </v-card>
</v-dialog>

我在长时间运行的进程之前打开此对话框,该过程本身包含在承诺中,并在解决承诺后关闭(隐藏(它。从概念上讲,这看起来像:

show_dialog();
long_running_task()       // returns a promise
.then(close_dialog())

问题是,长时间运行的任务(在客户端加载、解析和操作 Excel(不仅需要"长"(大约 10 秒(,而且还需要大量资源。由于它基本上是一个没有源代码的库调用,所以我只有一个"原子"调用需要处理。

现在发生的事情是 vuetify 组件中的进度条卡住了,并且在长时间运行的过程完成和资源释放之前不再更新。我以前的信念是,一个承诺可以"单独"运行,即使使用了大量资源,它也允许其他任务运行,而不仅仅是拥抱一切。

我正在使用以下环境:

  • 英特尔酷睿 i9-8959HK 处理器 @ 2.90 GHz
  • 32 GB 内存
  • 火狐
  • 最新的JS,Vue,Vuetify堆栈

我的问题:

  • 我对承诺的理解是错误的吗?
  • 如何确保进度条正确更新,即使承诺使用大量资源?还是我错过了其他事情?

试试这个。

show_dialog();
long_running_task()
.then(() => {
close_dialog()
})

如果没有,我会告诉你另一种方式

最新更新