我正在使用node-request将请求发送到服务器以获取一些报告。问题是服务器需要一些时间来生成报告,所以它以报告状态响应。我正在使用setInterval()
函数检查报告状态,并clearInterval()
在服务器发送ready
响应时使用。但是使用这种方法,即使在我使用之后clearInterval
,早期请求的响应也会不断出现,并且响应处理程序会一次又一次地运行。这不会造成很大的伤害,但我仍然相信它可以做得更好。
这是我的代码:
checkForReportReady = setInterval =>
@request URL, options, (err, res, body) =>
console.log err if err
body = JSON.parse body
if body['status'] is 'ready'
clearInterval checkForReportReady
@processReport body
, 1000
我需要的是:发出请求,等待响应,检查状态,如果状态不是ready
- 在超时后发出另一个请求,重复直到响应的状态代码为ready
. 如果状态就绪 - 退出循环(或清除间隔)并运行@processReport
.
我尝试提出承诺请求,并将其放入setInterval
,但结果是一样的。
PS我不控制服务器,所以我不能改变它响应或处理报告的方式。