function - 使用 VueJS 在 while 循环中更新数据
问题描述
所以我想要的只是在一个方法中使用一个while循环来改变这个对象,我从一个按钮事件中调用它。我唯一的问题是,当我在循环中递增它时, cameraPosition数据不会改变,它只会在函数结束时改变值。
任何帮助将非常感激!
data() {
return {
cameraPosition: { x: 0, y: 0, z: -60 }
methods: {
sleep(milliseconds) {
const date = Date.now();
let currentDate = null;
do {
currentDate = Date.now();
} while (currentDate - date < milliseconds);
},
animation(destinationPos) {
while (this.cameraPosition.z < destinationPos.z) {
this.cameraPosition.z = this.cameraPosition.z + 1;
sleep(200)
}
},
}
解决方案
你的睡眠方法是阻塞的。
使函数异步。改用这个:
async animation(destinationPos) {
while (this.cameraPosition.z < destinationPos.z) {
this.cameraPosition.z = this.cameraPosition.z + 1;
await new Promise(r => setTimeout(r, 2000));
}
推荐阅读
- eclipse - 如何使用 Maven Tycho 构建 Junit5 测试
- c# - C# - 提高搜索时的性能
- ms-access - 如何触发记录选择?
- json - Spring boot 和 Angular 中的 JSON 操作
- javascript - 即使 JSON 文件中不存在 slot.value,Alexa 也会激活意图
- ruby-on-rails - Gem 安装错误数量的参数(给定 1,预期为 0)
- javascript - 打字稿:属性“构造函数”的类型不兼容
- npm - package-lock.json 正在破坏我的构建
- scala - Spark:有条件(`if`)将参数值传递给函数
- javascript - 绑定类发生一次