ajax polling 优化问题 insufficient
大哥大大, 事情是这样的, 要实时获取最新的一笔资料
假如游戏是每70秒开出一次结果, 现在要在地50秒的时候, 开始polling一直抓取结果直到抓到新的
直接上代码
fetchResult (Id) {
return fetchGameResult(Id).then(
result => {
this.TimeGap = this.$moment(result[0].created_at).diff(result[1].created_at, 'ms')
this.gameLatestResult = result[0]
return result
}
)
},
pollResult (id) {
if (!this.gameLatestResult) {
return
}
let startPollingTIme = this.TimeGap - (20 * 1000)
console.log(startPollingTIme)
this.timer = setTimeout(() => {
console.log('startPlooning到了')
let oldResult = this.gameLatestResult
this.interval = setInterval(() => {
this.fetchResult(id).then(result => {
let newResult = result[0]
console.log('开始每两秒跳一次的interval直到换到新结果')
console.log(newResult.issue_number !== oldResult.issue_number)
if (newResult.issue_number !== oldResult.issue_number) {
console.log('因为换到新结果所以clear掉')
console.log(oldResult.issue_number)
console.log(newResult.issue_number)
clearInterval(this.interval)
this.pollResult(id)
}
})
}, (2 * 1000))
}, startPollingTIme)
}
```
但后来发现这样的处理, 假如一直放着给他跑, 不知为何会造成insufficient error,
也无法在固定时间点之前准确计算20秒前进行触发这个settimeout
api 格式是这样的
{
created_at:"2017-11-29T15:23:54.551984Z" // 用这个值的差来计算出TImeGap
created_by:null
issue_number:"171129763"
result_str: "xxx"
}
{
created_at:"2017-11-29T15:22:06.846063Z"
created_by:null
issue_number:"171129762"
result_str: "yyy"
}
想请问如何可以正常去实现这个功能, 并且优化(polling, 不考虑websocket)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论