如何用Go编写毫秒级定时器?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1094个文字,预计阅读时间需要5分钟。
定时执行功能最常用、最轻量级的实现方式是time.AfterFunc。它不会阻塞主线程,适合做“延迟执行一次的操作(如延迟300ms发送埋点、防抖触发等)。
注意:传入的毫秒数要转成 time.Duration,直接写 300 * time.Millisecond,别用 time.Duration(300)——后者单位是纳秒,实际只等 300 纳秒,几乎立刻触发。
常见错误现象:AfterFunc 回调没执行?大概率是调用后程序提前退出了(比如 main 函数结束),Go 的 main 退出会终止所有 goroutine。加个 select{} 或 time.Sleep 拖住主 goroutine 即可。
本文共计1094个文字,预计阅读时间需要5分钟。
定时执行功能最常用、最轻量级的实现方式是time.AfterFunc。它不会阻塞主线程,适合做“延迟执行一次的操作(如延迟300ms发送埋点、防抖触发等)。
注意:传入的毫秒数要转成 time.Duration,直接写 300 * time.Millisecond,别用 time.Duration(300)——后者单位是纳秒,实际只等 300 纳秒,几乎立刻触发。
常见错误现象:AfterFunc 回调没执行?大概率是调用后程序提前退出了(比如 main 函数结束),Go 的 main 退出会终止所有 goroutine。加个 select{} 或 time.Sleep 拖住主 goroutine 即可。

