Skip to content

运行时工具 ​

字数
436 字
阅读时间
3 分钟

本页收录 ChatLuna 暴露的常用运行时辅助工具。

Promise 工具 ​

导入路径:koishi-plugin-chatluna/utils/promise

withResolver() ​

  • 返回值: { promise, resolve, reject }

创建一个外部可 resolve/reject 的 Promise。

runAsync() ​

  • func: () => Promise<void>
  • 返回值: void

执行异步函数并把错误重新抛出。

runAsyncTimeout() ​

  • func: Promise<T>
  • timeout: number
  • defaultValue: T | null
  • 返回值: Promise<T>

为 Promise 增加超时兜底。

ObjectLock ​

导入路径:koishi-plugin-chatluna/utils/lock

new ObjectLock() ​

  • timeout: number,默认 3 分钟

lock.lock() ​

  • 返回值: Promise<() => void>

获取锁,返回释放锁的函数。

lock.runLocked() ​

  • func: () => Promise<T>
  • 返回值: Promise<T>

自动加锁、执行并释放。

lock.isLocked ​

  • 类型: boolean

RequestIdQueue ​

导入路径:koishi-plugin-chatluna/utils/queue

用于按 key 管理请求队列。

queue.add() ​

  • key: string
  • requestId: string
  • 返回值: Promise<void>

queue.remove() ​

  • key: string
  • requestId: string
  • 返回值: Promise<void>

queue.wait() ​

  • key: string
  • requestId: string
  • maxConcurrent: number
  • timeout: number
  • 返回值: Promise<void>

queue.getQueueLength() ​

  • key: string
  • 返回值: Promise<number>

queue.getQueueStatus() ​

  • key: string
  • 返回值: Promise<{ length: number; items: { requestId: string; age: number }[] }>

Pagination ​

导入路径:koishi-plugin-chatluna/utils/pagination

new Pagination() ​

  • input: PaginationInput<T>

pagination.push() ​

  • items: T[]
  • key: string
  • 返回值: Promise<void>

pagination.getPage() ​

  • page: number
  • limit: number
  • key: string
  • 返回值: Promise<T[]>

pagination.formatItems() ​

  • items: T[]
  • page: number
  • limit: number
  • total: number | undefined
  • 返回值: Promise<string>

pagination.getFormattedPage() ​

  • page: number
  • limit: number
  • key: string
  • 返回值: Promise<string>

pagination.searchPage() ​

  • find: (value: T) => boolean
  • 返回值: Promise<string>

pagination.updateFormatString() ​

  • formatString: PaginationInput<T>['formatString']

pagination.updateFormatItem() ​

  • formatItem: PaginationInput<T>['formatItem']

pagination.getTotalPages() ​

  • key: string
  • 返回值: number

pagination.hasPage() ​

  • page: number
  • key: string
  • 返回值: boolean

页面历史

在 CC-BY-SA-4.0 许可下发布