vue2中设计一个轮询任务进行发请求,大概如何实现呢?

先是给后端下达任务,后端去处理后存储到数据库,中途一直会发请求查询数据是否出现在数据库中,当能查询到数据时,会由后端返回给前端。
请问这种情况下用下面的代码合适吗?方便的话能否提供下更好的。

setInterval(() => {

setTimeout(this.getNewMessage(), 0);

}, 3000);


回答:

差不多就下面这种逻辑

// 为了在destroyed中清除定时器,这里挂载到this上,如若不需要清除也可以定义一个局部变量

const loopQuery = () => {

this._timer = setTimeout(async () => {

await axios('查询接口')

if(条件成立) clearTimeout(this._timer)

else loopQuery()

}, 3000)

}

await axios('下达任务接口')

loopQuery()

这里是等待请求返回才继续启动下一个定时器的,考虑到你时长蛮长的,其实直接用setInterval也没太大问题,查询数据是否在数据库也不会很耗时,所以这个可以根据实际情况决定,若用setInterval就是下面这样

await axios('下达任务接口')

this._timer = setInterval(async () => {

await axios('查询接口')

if(条件成立) clearInterval(this._timer)

}, 3000)


回答:

这样的场景,我感觉更适合用websocket,后端更新完毕数据后推送一条消息给前端。题主可以考虑一下这个方向。

以上是 vue2中设计一个轮询任务进行发请求,大概如何实现呢? 的全部内容, 来源链接: utcz.com/p/934256.html

回到顶部