微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Angular 11 的 setInterval 延迟中使用 JSON 变量

如何解决如何在 Angular 11 的 setInterval 延迟中使用 JSON 变量

我正在处理 Angular 11 项目。我想在 JSON.data 中提到的“X”持续时间之后循环代码。这是我的以下代码片段。

data.json

pageOrder: {
   pageDetails:[
   {
     "duration": 5
   },{
     "duration": 7
   }]
}

app.component.ts

id: any = 0;
reloadFunction();
....
....
....
reloadFunction(): void {
    // most of your code
    console.log('wassup'); //**this should run after "duration",unfortunately its not working**

    setTimeout(this.reloadFunction,pageOrder[this.id].duration * 1000);

    this.id += 1;
    if (this.id === pageOrder.length) {
      console.log('wassup1',this.id);
      this.id = 0;
    }
  }

不幸的是,代码只循环了一次,为什么???

解决方法

setTimeout 在不同的范围内调用函数。 this 不指向对象。你需要绑定对象

setTimeout(this.reloadFunction.bind(this),pageOrder[this.id].duration * 1000);
,

尝试以下:-

reloadFunction(): void {
    console.log('wassup'); 
    setTimeout(() => this.reloadFunction(),pageOrder[this.id].duration * 1000);

    this.id += 1;
    if (this.id === pageOrder.length) {
      console.log('wassup1',this.id);
      this.id = 0;
    }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。