【发布时间】: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