前两天,一个做前端的朋友半夜给我发消息,说他要被一个弹窗逼疯了,页面每隔十秒就跳一次“保存成功”,用户明明已经关了页面,提醒还在后台排队,他查了半天,最后发现问题特别简单:定时器设了,却忘了写 clearTimeout,旧的计时器没被清掉,新的又叠上来,于是系统看起来像中了邪。
我听完没忍住笑,因为这事太像我们的生活了。
clearTimeout 是 JavaScript 里一个很朴素的函数,作用是清除定时器,说白了,就是告诉系统:这件事不用再等了,这个提醒不用再响了,这个倒计时到此为止,它不创造什么,也不包装什么,只是把那些已经不合时宜的“待触发事件”干净利落地关掉。
可我发现,很多人写代码时会记得 clearTimeout,过日子却完全不会。
我有个朋友小林,手机上设过一堆闹钟:三个月后提醒自己跳槽,半年后提醒自己问前任“最近好吗”,每天晚上十点提醒自己复盘人生,结果呢?跳槽的事早想明白了,闹钟还在响;前任已经拉黑她两年了,提醒还在弹;复盘没复出什么名堂,只复出一肚子焦虑,她跟我说,最崩溃的是某天下午正在开会,手机突然跳出一句“记得给前任发消息”,她说那一刻自己像被三年前的幽灵拍了一下肩膀。
后来她做了件特别“clearTimeout”的事:把手机里所有过期提醒全删了,退出没必要的群,取消那些“先收藏再说”的课程提醒,连购物车里放了半年的东西也一并清掉,她没变佛系,也没突然逆袭,只是终于不再被一堆已经失效的倒计时追着跑,她跟我说:“原来不响的闹钟,才是好闹钟。”
这个例子特别小,但我印象很深,因为我们太容易把“设提醒”当成自律,把“列计划”当成进步,却很少承认:有些提醒从设下的那一刻起,就已经过期了,你三月份设的“每天背五十个单词”,到了八月还没开始,它就不再是目标,而是审判;你去年设的“一定要让他后悔”,到了今年还在响,它就不再是动力,而是消耗。
我自己也干过类似的事,以前写稿子,总喜欢设一个“晚上十点前必须写完”的倒计时,结果一到九点半,我就开始焦虑,越焦虑越写不动,最后干脆刷手机,后来我才明白,那个倒计时不是在帮我,而是在反复提醒我“你快来不及了”,真正有效的做法,是把旧的时间预期清掉,重新估一个现实点的节点,clearTimeout 不是放弃,而是承认:原来那个触发条件已经不适合现在的我了。
所以我对 clearTimeout 的理解,慢慢从一个技术函数变成了一种生活动作。
它的第一层,是清理任务,不是所有计划都值得执行到底,有些计划只是你某个情绪上头时的产物,比如凌晨两点决定学吉他,周一早上决定每天跑十公里,它们不是坏东西,但它们需要被重新评估,定期清掉那些“设了但一直没动”的提醒,比硬撑着完成更能保护你的注意力。
它的第二层,是清理关系里的过期期待,比如等一个不会回复的人,比如反复琢磨领导三年前的一句评价,比如在家庭群里等着某个人突然理解你,这些等待像没有 clearTimeout 的定时器,隔一阵就响一次,提醒你“还没结束”,可有些事不是没结束,是你该主动结束了,我的观点很明确:clearTimeout 不是冷漠,而是一种边界感,你可以记得一件事,但不必让它在每个深夜自动弹窗。
它的第三层,是清理自我攻击,很多人心里有个默认设置:只要闲下来,就自动播放“你不够努力”“你又浪费了一天”,这个定时器最可怕,因为它没有停止按钮,而 clearTimeout 在这里的意思是,识别出那个反复响起的自我批评,然后告诉自己:这条提醒已经过期了,我不需要再按它说的做。
我不是鼓励大家一遇到不舒服就清空一切,clearTimeout 不是逃避,不是把手机一关、把群一退、把计划一删就假装问题不存在,它真正的前提是:你判断过这件事还值不值得继续触发,该做的事还是要做,该面对的人还是要面对,区别在于,你是被旧闹钟推着走,还是自己重新设定新的节奏。
我现在有个小习惯,每周日晚上花十分钟做一次“心理 clearTimeout”:把手机里过期的闹钟删掉,把收藏夹里三个月没打开的文章清一清,把脑子里那些“我应该早就……”的句子写下来,然后划掉,不是因为我做得有多好,而是我发现,人一天能承受的提醒是有限的,旧提醒响得太勤,新事情就进不来。
所以如果你问我,成年人最该学会的技能是什么,我会说,除了设置目标,还要学会清除定时器,clearTimeout 放在代码里,是防止重复弹窗;放在生活里,是防止过期焦虑反复上门,它提醒我们:有些事不用再等了,有些声音可以关掉了,有些倒计时,本来就不该一直响下去。
今天不妨试一次,打开手机,删掉三个已经没意义的提醒;打开备忘录,划掉一件你早就决定不做的事;再在心里对某个反复响起的旧声音说一句:clearTimeout,到此为止。
然后你会发现,世界没有因此停摆,只是终于安静了一点。
