1

我正在使用 twilio javascript sdk 进行 twilio-programmable-chat。

而且我想将分页应用于我的频道结果,但我无法弄清楚。

这是我当前的代码。

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
})

我正在寻找一个如何在频道上进行分页的示例。谢谢。

4

2 回答 2

5

我终于找到了一种方法。

它应该递归完成,因为我们通过调用获得初始列表,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);
    }
}

这就是您在每次通话中会得到的。

于 2019-08-09T14:16:37.950 回答
0

根据文档,该getUserChannelDescriptors方法不带任何参数。

但是您不必手动进行分页,因为该方法返回一个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 类的文档在这里

于 2019-02-14T07:41:15.707 回答