如何解决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 举报,一经查实,本站将立刻删除。