如何在 twilio-programmable-chat 的频道上进行分页?
How to do pagination on channels in twilio-programmable-chat?
我正在为 twilio-programmable-chat 使用 twilio javascript sdk。
我想对我的频道结果应用分页,但我无法弄明白。
这是我当前的代码。
this.chatClient.getUserChannelDescriptors().then(paginator => {
// All channels are fetched
})
我试图传递一个 pageSize
类似于 getMessages(10)
的工作方式,但没有成功。
this.chatClient.getUserChannelDescriptors(10).then(paginator => {
// The result was same, it fetched all the channels instead of just 10
})
我正在寻找一个示例,说明如何在频道上进行分页。
谢谢
根据 documentation,getUserChannelDescriptors
方法不接受任何参数。
但是您不必手动进行分页,因为方法 returns 是 Promise.<Paginator.<ChannelDescriptor>>
类型..这意味着您应该能够访问 twilio 提供的分页功能。
您的 paginator.items
应该只有单个页面中的项目。
编辑: 基本上关键是您的第一个片段是正确的。不幸的是,twilio 不是开源的,所以我无法检查他们在哪里定义了 page_size
。但我鼓励您创建一百个模拟频道,然后检查 paginator.items
数组的大小。
试试这个:
this.chatClient.getUserChannelDescriptors().then(paginator => {
console.log(paginator.items, paginator.hasNextPage(), paginator.hasPrevPage());
})
Paginator class 的文档是 here
我终于找到了方法。
它应该递归完成,因为我们通过调用 getUserChannelDescriptors()
获得初始列表,但随后可以通过调用 nextPage()
;
获取其余记录
async function processChannels(paginator) {
// Now, if hasNextPage is true
// call nextPage() to get the records instead of getUserChannelDescriptors()
if (paginator.hasNextPage) {
const nextPaginator = paginator.nextPage();
processChannels(nextPaginator);
} else {
console.log("END OF RECORDS");
}
}
async function getChannels() {
const paginator = await chatClient.getUserChannelDescriptors();
// Initiate the recursive function
if (paginator.items) {
await processChannels(paginator);
}
}
这就是您将在每次通话中得到的信息。
我正在为 twilio-programmable-chat 使用 twilio javascript sdk。
我想对我的频道结果应用分页,但我无法弄明白。
这是我当前的代码。
this.chatClient.getUserChannelDescriptors().then(paginator => {
// All channels are fetched
})
我试图传递一个 pageSize
类似于 getMessages(10)
的工作方式,但没有成功。
this.chatClient.getUserChannelDescriptors(10).then(paginator => {
// The result was same, it fetched all the channels instead of just 10
})
我正在寻找一个示例,说明如何在频道上进行分页。 谢谢
根据 documentation,getUserChannelDescriptors
方法不接受任何参数。
但是您不必手动进行分页,因为方法 returns 是 Promise.<Paginator.<ChannelDescriptor>>
类型..这意味着您应该能够访问 twilio 提供的分页功能。
您的 paginator.items
应该只有单个页面中的项目。
编辑: 基本上关键是您的第一个片段是正确的。不幸的是,twilio 不是开源的,所以我无法检查他们在哪里定义了 page_size
。但我鼓励您创建一百个模拟频道,然后检查 paginator.items
数组的大小。
试试这个:
this.chatClient.getUserChannelDescriptors().then(paginator => {
console.log(paginator.items, paginator.hasNextPage(), paginator.hasPrevPage());
})
Paginator class 的文档是 here
我终于找到了方法。
它应该递归完成,因为我们通过调用 getUserChannelDescriptors()
获得初始列表,但随后可以通过调用 nextPage()
;
async function processChannels(paginator) {
// Now, if hasNextPage is true
// call nextPage() to get the records instead of getUserChannelDescriptors()
if (paginator.hasNextPage) {
const nextPaginator = paginator.nextPage();
processChannels(nextPaginator);
} else {
console.log("END OF RECORDS");
}
}
async function getChannels() {
const paginator = await chatClient.getUserChannelDescriptors();
// Initiate the recursive function
if (paginator.items) {
await processChannels(paginator);
}
}
这就是您将在每次通话中得到的信息。