【问题标题】:Javascript - How to execute a function on a given time ? (with variable time periods)Javascript - 如何在给定时间执行函数? (具有可变的时间段)
【发布时间】:2022-01-31 14:27:52
【问题描述】:

我必须向后端服务器发出请求以检索一些数据,并且在响应中包含我必须再次发出请求的时间。例如:我在凌晨 12:00 发出请求,响应带有我需要的数据,并且下次我必须再次发出请求时,例如“16:00”。

只要应用程序正在运行,这个“循环”就永远不会结束。问题是,我的代码有效,但我不知道这是否是一个好习惯,因为我一遍又一遍地调用同一个函数。
有人可以向我解释一下我在做什么吗?

这是我目前的代码:

aFunction() {
  this.programacionService.getNextData().subscribe((r: any) => {
    console.log(r);

    window.setTimeout(() => {

        // Programming logic

        // Repeat the process
        this.aFunction.call(this);
      },
      // This is a method to format the hour of the day
      this.functionTimeout(r.hourToMakeTheRequestAgain)
    );
  })
}

这是正确的吗?它不会随着时间的推移使“callStack”溢出吗?提前致谢!

【问题讨论】:

  • 如果您担心多次调用该函数,there are many ways to prevent that
  • 我的问题更多是“我想一遍又一遍地调用一个函数,但要正确执行”而不是“多次调用一个函数”。我需要多次调用该函数。感谢回复!
  • 为什么要在setTimeOut()函数外订阅getNextData()?当它到达 setTimeOut() 函数时,这不会导致旧数据处理吗?
  • 嗨! @TroudiGhaith 我正在使用 Angular2。订阅是向后端服务器发出请求。在响应 (r) 中有我需要的数据,以及下次我必须再次发出请求的数据。我首先订阅了 getNextData,因为这是一遍又一遍地获取数据的所有过程的开始
  • 我的意思是,在 setTimeOut() 中发出请求会更好地获取数据库的最后更新,当然,请求将再次发出。

标签: javascript loops timeout intervals callstack


【解决方案1】:

我不知道这是不是真的,但是: 只要您的请求不会占用服务器的大量工作,就可以了。

【讨论】:

    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多