【发布时间】:2022-01-28 15:49:11
【问题描述】:
我想在我的网络应用程序上显示 Facebook 页面的 cmets 列表并实现某种延迟加载。为了获取所有 cmets,我必须首先获取帖子列表。 /comments 和 /posts 都将返回具有此形状的响应:
{
"data": [...],
"paging": {
"cursors": {...},
"next": "https://graph.facebook.com/v12.0/..."
}
}
我曾想过通过 Task.async/1 和 Task.await/2 并行获取 cmets,如下所示:
posts = MyAppGetter.fetch_posts("https://graph.facebook.com/v12.0/123456789/posts")
comments =
posts
|> Enum.map(fn(p) -> Task.async(fn ->
MyAppGetter.fetch_comments("https://graph.facebook.com/v12.0/#{p.id}/comments")
end) end)
|> Enum.map(&Task.await/1)
我的困境是不知道何时请求“下一页”,因为/posts 端点不会返回每个帖子的 cmets 总数。理想情况下,我想在最初和随后总共显示 100 个 cmets。但是,由于缺乏信息,帖子的第一页可能有 0 个 cmets,而下一页有 200 个 cmets。
【问题讨论】: