【发布时间】:2015-09-01 22:49:54
【问题描述】:
我使用node-request 将请求发送到服务器以获取一些报告。问题是服务器需要一些时间来生成报告,所以它以报告状态响应。我正在使用setInterval() 函数检查报告状态,并在服务器发送ready 响应时使用clearInterval()。但是使用这种方法,即使在我使用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 - 超时后发出另一个请求,重复直到响应的状态码为@ 987654328@。如果状态为就绪 - 退出循环(或清除间隔)并运行 @processReport。
我尝试提出promisified request,并将其放入setInterval,但结果是一样的。
附:我不控制服务器,因此我无法更改它响应或处理报告的方式。
【问题讨论】:
标签: javascript node.js promise bluebird node-request