首页 > 解决方案 > 长时间延迟后的角度 setInterval 接收值

问题描述

我正在开发一个项目,我需要检查 json 文件中的更改。我已将其实现为:

import { Subscription } from 'rxjs';
import { HttpClient } from "@angular/common/http";

保存数据的变量声明为:

var data4:any = []; 
var flag2:boolean = false;

在出口类部分


    ngOnInit()
    {   
        setInterval(()=> 
        {
            this.httpClient.get("../../assets/data/abc.json").subscribe(data3 =>
            {
                if((JSON.stringify(data3) != JSON.stringify(data4) && flag2))
                {
                    this.loadData(60);  /**/
                }
                else
                {
                    flag2 = true;
                }
                data4 = data3;
            })
        },10)
   }

代码很大,所以我只粘贴了相关部分。

当我更改 json 文件中的值时,loadData 函数确实会执行,但只是在一段时间之后。

我能做些什么来消除或减少这种滞后吗?

请指导

标签: angulardelaysetinterval

解决方案


我能做些什么来消除或减少这种滞后吗?

我们需要更多信息来回答这个问题。首先,您必须了解延迟是由于 http 调用造成的。如何缩短响应时间?好吧,你必须向我们展示这个调用的服务器端发生了什么:

this.httpClient.get("../../assets/data/abc.json")

您是该端点的所有者吗?

其次,您每 10 毫秒触发一次 http 请求。这对于 http 请求来说太快了,您基本上每秒执行 100 个请求,我认为 http 不是为此而设计的增加通话之间的延迟。


推荐阅读