# set_timeout ## 功能 注册一次性延迟回调,并立即返回 `Timer` 对象。回调到期后由所属 VM 的单线程事件循环执行一次,回调返回值会被忽略。 ## 语法 ```bt timer = set_timeout(fn, delay_ms) ``` ## 参数 | 参数 | 类型 | 必填 | 默认值 | 说明 | | ------ | ------ | ------ | ------ | ------ | | fn | Fn | 是 | 无 | 延迟执行的 BT 函数。 | | delay_ms | Int | 否 | 0 | 延迟毫秒数;负数按 0 处理。 | ## 返回值 | 类型 | 说明 | | ------ | ------ | | Timer | 定时器句柄,可调用 `cancel()` 取消尚未触发的回调。 | ## 示例 ```bt fired = false timer = set_timeout(fn() { fired = true }, 100) // 输出:false print fired ``` ## 注意事项 - `set_timeout()` 不会同步执行回调;`delay_ms` 为 0 时也会尽快投递到事件队列。 - CLI 脚本存在活动 timeout 时会保持进程,直到回调执行完成或被取消。 - Web 请求上下文中不能创建定时器,请求结束后 VM 会释放。 - 取消定时器的方法见 [Timer.cancel](/zh-hans/docs/system/timer)。