概要
代码示例
页面迭代器
-- 将页面重新格式化为表
local function pagesToTable(pages)
local items = {}
while true do
table.insert(items, pages:GetCurrentPage())
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
return items
end
local function iterPageItems(pages)
local contents = pagesToTable(pages)
-- 跟踪当前页码,从 1 开始
local pageNum = 1
-- 获取最后一页的页码,以便我们不对其进行迭代
local lastPageNum = #contents
-- for resumes 这个协程直到没有内容可处理
return coroutine.wrap(function()
-- 循环直到页码大于最后一页的页码
while pageNum <= lastPageNum do
-- 遍历当前页的所有条目
for _, item in ipairs(contents[pageNum]) do
-- 暂停循环以让开发者处理条目和页码
coroutine.yield(item, pageNum)
end
pageNum += 1
end
end)
end
-- 使用 iterPageItems 函数迭代目录搜索的页面
local AvatarEditorService = game:GetService("AvatarEditorService")
local parameters = CatalogSearchParams.new()
parameters.SearchKeyword = "头发"
local catalogPages = AvatarEditorService:SearchCatalogAsync(parameters)
for item, pageNumber in iterPageItems(catalogPages) do
print(item, pageNumber)
endAPI 参考
属性
方法
AdvanceToNextPageAsync
Pages:AdvanceToNextPageAsync():()
返回
()