xMagic- 仓湖云函数数字应用平台
首页
🍓 函数引擎
更多产品
更多产品
  • 微澜组网
首页
🍓 函数引擎
更多产品
更多产品
  • 微澜组网
  1. xScript - x16.25.11
  • xMagic - 仓湖云函数数字应用平台
  • xScript - 仓湖云函数数字应用引擎
  • xMagic - 二开应用场景案例
  • 数据应用
    • 消息订阅(WSS)
    • 消息订阅(SSE)
    • 用户信息
    • 免密登陆(短信)
  • xScript - x16.25.11
    • assert
    • buffer
    • color
    • compress
    • console
    • crontab
    • crypto
    • encoding
    • events
    • evenloop
    • esm
    • fetch
    • fs
    • image
    • kv
    • mail
    • ml
    • mqtt
    • multipart
    • net
    • os
    • path
    • process
    • protobuf
    • querystring
    • redis
    • request
    • require
    • sql
    • tty
    • tui
    • ua
    • url
    • util
    • websocket
    • xml
    • yaml
    • mongo
    • http
    • stream
    • runtime
  • 小工具
    • APS - 代理转发
      • Any Proxy Service - 高级 HTTP/HTTPS/gRPC 代理转发工具
      • 配置指南 - 双向 Headers 和 Match/Replace
  • 数据模型
    • Schemas
      • AdminChangeAvatarReq
      • casbin.CasbinRule
      • AdminDelBatchReq
      • entity.DeptLable
      • AdminDelReq
      • entity.DevGenTable
      • AdminListReq
      • entity.DevGenTableColumn
      • AdminLoginReq
      • entity.FlowWorkClassify
      • AdminPostReq
      • entity.FlowWorkInfo
      • AdminReply
      • entity.FlowWorkTemplates
      • AdminUpdatePwdReq
      • entity.LogLogin
      • MenuDelBatchReq
      • entity.LogOper
      • MenuDelReq
      • entity.LoginM
      • MenuListReq
      • entity.MenuLable
      • MenuPostReq
      • entity.MenuPath
      • MenuReply
      • entity.ResEmail
      • RoleApisReq
      • entity.ResOss
      • SystemApiDelBatchReq
      • entity.ScreenGroupLabel
      • SystemApiDelReq
      • entity.SysApi
      • SystemApiListReq
      • entity.SysConfig
      • SystemApiPostReq
      • entity.SysDept
      • SystemApiReply
      • entity.SysDictData
      • SystemDepartmentDelBatchReq
      • entity.SysDictType
      • SystemDepartmentDelReq
      • entity.SysJob
      • SystemDepartmentListReq
      • entity.SysMenu
      • SystemDepartmentPostReq
      • entity.SysNotice
      • SystemDepartmentReply
      • entity.SysPost
      • SystemRoleApiDelBatchReq
      • entity.SysRole
      • SystemRoleApiDelReq
      • entity.SysTenants
      • SystemRoleApiListReq
      • entity.SysUser
      • SystemRoleApiPostReq
      • entity.SysUserB
      • SystemRoleApiReply
      • entity.SysUserId
      • SystemRoleDelBatchReq
      • entity.SysUserView
      • SystemRoleDelReq
      • entity.VisualRuleChain
      • SystemRoleListReq
      • entity.VisualScreen
      • SystemRoleMenuAddReq
      • entity.VisualScreenGroup
      • SystemRoleMenuDelBatchReq
      • form.Login
      • SystemRoleMenuDelReq
      • from.SendMail
      • SystemRoleMenuListReq
      • map[string]interface {}
      • SystemRoleMenuPostReq
      • map[string]string
      • SystemRoleMenuReply
      • model.BaseAutoModel
      • SystemRolePostReq
      • model.BaseModel
      • SystemRoleReply
      • model.ResultPage
      • model.ResultPage.data
      • vo.AuthVo
      • vo.DeptTreeVo
      • vo.MenuTreeVo
      • vo.MetaVo
      • vo.RouterVo
      • vo.TableInfoVo
      • vo.TokenVo
      • vo.UserRolePost
      • vo.UserVo
      • vo.UserVo.data
首页
🍓 函数引擎
更多产品
更多产品
  • 微澜组网
首页
🍓 函数引擎
更多产品
更多产品
  • 微澜组网
  1. xScript - x16.25.11

evenloop

EventLoop 模块#

EventLoop 是 XScript 内置的事件循环系统,提供了类似 Node.js 的异步编程能力。它自动集成到运行时中,无需手动引入。

功能特性#

定时器 - setTimeout 和 setInterval 支持
立即执行 - setImmediate 立即调度任务
Promise 集成 - 完整支持 ES6 Promise
自动管理 - 无需手动启动或停止事件循环
Node.js 兼容 - API 与 Node.js 保持一致

全局 API#

以下函数已自动注入到全局环境中,可直接使用:

setTimeout(callback, delay, ...args)#

延迟执行函数。
参数:
callback (function) - 要执行的回调函数
delay (number) - 延迟时间(毫秒),默认为 0
args (可变参数) - 传递给回调的参数
返回: (Timer) 定时器对象,可用于取消
示例:

clearTimeout(timer)#

取消 setTimeout 创建的定时器。
参数:
timer (Timer) - setTimeout 返回的定时器对象
示例:

setInterval(callback, interval, ...args)#

重复执行函数。
参数:
callback (function) - 要重复执行的回调函数
interval (number) - 时间间隔(毫秒)
args (可变参数) - 传递给回调的参数
返回: (Interval) 间隔器对象,可用于取消
注意: 如果 interval ≤ 0,将自动设置为 1ms
示例:

clearInterval(interval)#

取消 setInterval 创建的间隔器。
参数:
interval (Interval) - setInterval 返回的间隔器对象
示例:

setImmediate(callback, ...args)#

在当前事件循环结束后立即执行函数。
参数:
callback (function) - 要执行的回调函数
args (可变参数) - 传递给回调的参数
返回: (Immediate) 立即执行对象,可用于取消
特点:
比 setTimeout(fn, 0) 更早执行
在当前脚本执行完后立即运行
在任何定时器之前执行
示例:

clearImmediate(immediate)#

取消 setImmediate 创建的立即执行任务。
参数:
immediate (Immediate) - setImmediate 返回的对象
示例:

使用示例#

基本定时器#

执行顺序#

定时器链#

Promise 集成#

异步操作链#

定时任务管理#

轮询实现#

防抖(Debounce)#

节流(Throttle)#

重试机制#

最佳实践#

1. 始终清理定时器#

2. 使用 Promise 而非嵌套回调#

3. 合理设置定时器间隔#

4. 错误处理#

5. 避免定时器冲突#

常见问题#

setTimeout vs setImmediate#

setTimeout(fn, 0): 在下一个定时器阶段执行
setImmediate(fn): 在当前事件循环结束后立即执行
推荐使用 setImmediate 来延迟到下一个事件循环迭代。

定时器不精确#

定时器的延迟时间不是精确的,实际执行时间可能会稍晚,这取决于:
事件循环的繁忙程度
其他待处理的任务
系统负载

清理未完成的定时器#

在程序结束前应该清理所有定时器:

与 Node.js 的兼容性#

XScript 的 EventLoop 模块实现了 Node.js 的核心定时器 API:
API支持说明
修改于 2025-11-03 13:19:30
上一页
events
下一页
esm
Built with