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