给大家分享一个我碰到的问题,碰到的话容易出错
需求背景:需要轮询最新的key来发送画面
这个问题出现的必要条件是:
1. 轮询函数
2. 定时器递归调用时需要等待promise
3. 在函数外部clearTimeout,
出现错误的代码如下,这里点击getNewJobKey如果是在await的那3s范围里,clearTimeout是清除不到3s后setTimeout,
上面说到的问题是比较难排查的, 实际出现这个问题的情况是,在await的那几毫秒里,关闭了上上次的timer,而没有等await结束后关闭这次的timer,点击事件进来又进入了轮询函数,生成新的timer