hooks [QUESTION]useRequest轮询如何知道当前状态?

avwztpqn  于 2022-10-25  发布在  其他
关注(0)|答案(3)|浏览(202)

背景

  • 业务中,需要判断当前定时器状态,决定是否进行轮询
t5zmwmid

t5zmwmid1#

我们是没有暴露给外部轮训的定时器状态的。没太理解 「判断当前定时器状态,决定是否进行轮询」是啥意思,如果不使用轮训,那么轮训定时器怎么启动呢

hlswsv35

hlswsv352#

我们是没有暴露给外部轮训的定时器状态的。没太理解 「判断当前定时器状态,决定是否进行轮询」是啥意思,如果不使用轮训,那么轮训定时器怎么启动呢

举例一个场景

我们有个list,然后会轮询请求去更新里面的数据。

然后我们有个useEffect

useEffect(()=>{
   if(!list.length) cancel();

   // STEP: 这里需要开启或者继续定时器,由于无法直接判断,我们只能直接调用run
   run()

},[list])

这样就变成死循环了,因为list变动触发run,run又会触发list的更新

但想象中应该是

useEffect(()=>{
   // CONDI: 没有list了 => 就不轮询了
   if(!list.length) cancel();

   // CONDI: 如果还在轮询 => 不操作
   if(isPoll) retrun

  // CONDI: 如果没有轮询 => 开始轮询
  run()

},[list])

这个list的内容是由其他组件控制的,是个队列,所以有『有列表』和『无列表』两种状态

ztyzrc3y

ztyzrc3y3#

目前没有提供,可以通过 loading 来判断~

相关问题