首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从While循环内部的角度5更新视图

从While循环内部的角度5更新视图
EN

Stack Overflow用户
提问于 2018-04-18 12:17:20
回答 1查看 1.8K关注 0票数 5

我的应用程序中有一个进度条,它使用while循环进行更新。我可以用每个循环成功地更改更新进度值,但是视图只有在整个while循环完成后才会更新。有没有任何方法在while循环中添加类似于每个循环的"ForceViewUpdate()“,或者类似的东西?

在这里检查我的示例并打开控制台,查看正在更新的值:https://stackblitz.com/edit/angular-5zlja4?file=app%2Fapp.component.ts

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-18 12:22:45

等待的方式阻止了整个jsvascript线程。Javascript运行在单个线程上,如果阻止运行while循环的线程,则不允许执行任何其他代码,包括UI更新。您应该使用setTimeout来在一段时间后运行代码,或者,您可以使用aync/awaitPromises来给您的代码一个更有顺序的感觉:

代码语言:javascript
复制
export class AppComponent  {
    sStatus = "Inactive";
    iProgressMax = 100;
    iProgressValue = 0;

  async Run() {
    this.sStatus = "Running...";
    while (this.iProgressValue < this.iProgressMax) {
      await this.wait(1000);
      this.iProgressValue = this.iProgressValue + 20;
      console.log(this.iProgressValue);
    }
    this.sStatus = "Complete";
  }

  wait(ms: number)  {
    return new Promise((resolve)=> {
      setTimeout(resolve, ms);
    });
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49899517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档