业务场景:一个网页需要每隔五秒发送一次请求去获取数据,但是必须等上一次获取完成之后才能进行下一次获取。传统的setinterval不关注上一次操作的状态,只会每隔一定时间就进行下一次操作,无法满足需求。
解决方法:递归settimeout。封装好请求之前的操作和settimeout作为loop(),settimeout的回调函数传入loop(),需要用到的时候直接调用loop()就可以开始无限循环。
里边还有关于如何跳出递归的多种实现方法。
其实实现这个功能不一定非得需要递归settimeout,也可以使用promise里while循环,但是还没研究过。