# set_interval ## 功能 注册固定延迟重复回调,并立即返回 `Timer` 对象。每轮回调执行完成后才计算下一次触发时间,因此同一个 interval 不会重入,也不会因为慢回调堆积事件。 ## 语法 ```bt timer = set_interval(fn, delay_ms) ``` ## 参数 | 参数 | 类型 | 必填 | 默认值 | 说明 | | ------ | ------ | ------ | ------ | ------ | | fn | Fn | 是 | 无 | 重复执行的 BT 函数。 | | delay_ms | Int | 否 | 1 | 间隔毫秒数;小于 1 时按 1 处理。 | ## 返回值 | 类型 | 说明 | | ------ | ------ | | Timer | 定时器句柄,可调用 `cancel()` 停止后续触发。 | ## 示例 ```bt count = 0 set_interval(fn(self) { count++ if count >= 3 { self.cancel() } // 输出:当前次数 println(count) }, 10) ``` ## 注意事项 - 回调可以声明第一个参数接收当前 `Timer` 对象,便于在回调内部调用 `self.cancel()`。 - 回调不声明参数时,多余的 `self` 参数会被忽略。 - 回调抛错会记录错误,后续 interval 默认继续执行;需要停止时请在回调内捕获错误并取消。 - Web 请求上下文中不能创建定时器。