Skip to content

Pages ​

Pages 是分页数据的迭代器封装,用于把体量较大的列举结果拆成多页逐步读取。它对外提供当前页内容的读取、是否已迭代完毕的状态标记,以及异步推进到下一页的操作,实例由各类列表类接口在返回值中提供,业务侧不能自行创建。

概览 ​

Pages 是分页数据的迭代器封装,用于把体量较大的列举结果拆成多页逐步读取。它对外提供当前页内容的读取、是否已迭代完毕的状态标记,以及异步推进到下一页的操作,实例由各类列表类接口在返回值中提供,业务侧不能自行创建。

不可实例化,由接口返回

函数 ​

GetCurrentPage ​

签名:GetCurrentPage() -> Array

返回当前页的数据列表;具体元素结构由创建该分页对象的列表接口决定。

返回值 Array

读取当前页数据

lua
-- @runtime server
local DataStoreService = game:GetService("DataStoreService")
local Task = game:GetService("Task")
local orderedStore = DataStoreService:GetOrderedDataStore("PlayerScores")

Task:Spawn(function()
  local pages = orderedStore:GetSortedAsync(false, 10)
  local currentPage = pages:GetCurrentPage()
  for _, item in ipairs(currentPage) do
    print("Key:", item.Key, "Value:", item.Value)
  end
end)

AdvanceToNextPageAsync ​

签名:AdvanceToNextPageAsync() -> Bool

异步将分页数据翻到下一页,并返回是否成功翻页。

返回值 Bool

等待翻页并继续读取

lua
-- @runtime server
local DataStoreService = game:GetService("DataStoreService")
local Task = game:GetService("Task")
local orderedStore = DataStoreService:GetOrderedDataStore("PlayerScores")

Task:Spawn(function()
  local pages = orderedStore:GetSortedAsync(false, 10)
  while true do
    for _, item in ipairs(pages:GetCurrentPage()) do
      print("Key:", item.Key, "Value:", item.Value)
    end
    if pages.IsFinished then
      break
    end
    local ok = pages:AdvanceToNextPageAsync()
    if not ok then
      break
    end
  end
end)

属性 ​

名称类型默认值说明
IsFinishedBoolfalse布尔型只读属性,用于标识当前分页结果是否已经全部迭代完毕。读取该属性可以判断是否还存在后续页数据,从而决定继续分页还是结束读取。(只读)