微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twilio Chat getChannelDescriptors分页器页面项目未定义

如何解决Twilio Chat getChannelDescriptors分页器页面项目未定义

最近遇到了一个异常,我们无法弄清楚到底是什么,但必须使用故障保护编程。

问题是Paginator返回的Client.getUserChannelDescriptors()下一页,但是page.items返回undefined,随后的while循环将保持不定式循环:>

async getAllRoomDescriptors() {
    try {

        var descPaginator = await TwilioClient.getChannelDescriptors()
        var descs = descPaginator.items.concat([])
        
        console.log('descPaginator: ',descPaginator); // Paginator looks normal

        // NB! This is infinitive loop!
        while (descPaginator.hasNextPage) {
            var pag = descPaginator.nextPage()     // returns another Paginator (page)
            console.log('pag.items: ',pag.items); // returns undefined!!!
            descs = descs.concat(pag.items)
        }
        return descs
    } catch (error) {
        throw new Error(error)
    }
}

为了解决这个无限循环 未定义的页面,我添加了以下故障保险(阅读黑客文章)以使其在不了解的情况下正常工作问题的根本原因。

async getAllRoomDescriptors() {
    try {
        var descPaginator = await TwilioClient.getChannelDescriptors()
        var descs = descPaginator.items.concat([])
        var currPage = 0
        var maxAllowedPages = 60

        while (descPaginator.hasNextPage) {
            currPage++
            var pag = descPaginator.nextPage()

            // 1st sign of trouble if items are undefined
            if(!pag.items) break;

            descs = descs.concat(pag.items)

            // 2nd problem,infintity loop avoidance check
            if(currPage >= maxAllowedPages) break;
        }
        return descs
    } catch (error) {
        throw new Error(error)
    }
}

从3.3.5到4.0.0的所有Changelogs都没有提及任何内容,关于Paginator的工作方式的文档也未更改。

有人知道什么可能导致此问题。 3.3.5和4.0.0的行为相同。 同样,这似乎对特定用户而言是隔离的,因为我无法在使用更少通道的另一个用户中重新创建它。这是最“负载”的Twilio用户发生的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。