我有一个我需要轮询的xhr请求,可能需要1分钟到3分钟才能发送回复。理想情况下,我希望收到上一回复后不超过1分钟的回复。尝试实现这一目标的最佳方法是什么?
我天真的做法是:
function xhr(){
//... send xhr and process response
}
[1, 2, 3, 4].forEach((item, index) ->
setTimeout(() => {
xhr()
setInterval(() => xhr(), 4 * 60 * 1000)
}, index * 60 * 1000)
)
但是这种假设他们都需要3分钟。还有更好的方法吗?
编辑:为了澄清,我希望这样做,以便有多个xhr请求并行进行,以便它们有希望重叠,以便在任何时候响应之间的差距不会超过1分钟。