昨天产品经理提了个需求,让某个事件每次点击后走一个执行两次、间隔20秒的定时任务。一开始想的是执行多次的话就用setInterval定时器,在走完两次后想办法让setInterval停止来完成需求。后来浏览文章时,发现setInterval定时器有缺点。setTimeout 产生的任务会直接 push 到任务队列中;但是setInterval 在每次把任务 push 到任务队列前,都要进行一下判断(看上次的任务是否仍在队列中,如果有则不添加,没有则添加),会看起来有丢帧的感觉,不像调用时设置的时间间隔了。所以,我后面用了setTimeout模拟了setInterval定时器,执行了两次的定时任务。