【发布时间】:2019-06-16 14:47:54
【问题描述】:
我的应用程序中有一个data 变量,它是message,而且我在执行某些加密算法的方法中也有一种方法。
这是我的代码。
export default {
data: () => ({
message: ""
}),
methods: {
click() {
this.message = "Hello";
console.log("this.message ", this.message); // Prints "Hello"
// takes around 8 seconds
var encryptedPassphrase = generateKeystore();
console.log("this.message ", this.message); // Prints "Hello"
}
}
};
message 变量上方我在 HTML 标记中显示,并且方法 click 从 Vuetify 按钮调用。
下面是HTML代码,
<div>
<p>{{message}}</p>
<v-btn @click="click">Click</v-btn>
</div>
问题
现在的问题是当click 方法被调用时,它所做的第一个任务是更新message 变量,但是这个message 变量更新会在完整的函数执行完成后反映在HTML 中。所以在click 函数中,下一个任务是加密计算,大约需要 8 秒,完成后message 反映在 HTML 中。我不知道这里发生了什么。
只是提到我在这里使用webpack。
更新
<v-btn @click="update(); click();">Click</v-btn>
即使这样也不行,这里update方法更新message变量,click函数完成后更新。
【问题讨论】:
-
你有什么可重现或可验证的例子/小提琴我们可以修补吗?
-
我可以,但问题是我无法在小提琴中运行该加密函数,这需要更多时间来执行。 :(
-
也许可以尝试将加密函数包装在 Promise 中并异步执行。
-
无效,方法执行完成后更新。
标签: javascript vue.js webpack