最近,我们遇到了一个异常,我们一直找不出答案,但不得不在一个故障安全装置中编程。
问题是,由分页器返回的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)
}
}
为了解决这个不定式循环和未定义的页面项,我添加了以下故障安全(读取hacks),以使它在不了解问题根源的情况下工作。
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的所有昌洛基都没有提到任何关于它的内容,关于分页器工作方式的文档也没有改变。
有没有人知道是什么导致了这个问题。在3.3.5和4.0.0上都有相同的行为。而且,这似乎是与特定用户隔离的,因为我无法在另一个使用较少的通道中重新创建此功能。这发生在“加载”最多的Twilio用户身上。
发布于 2021-01-13 10:34:25
代码中有一个错误:descPaginator.nextPage()
返回一个承诺,所以您必须再次使用await
。就像这样:
while (descPaginator.hasNextPage) {
descPaginator = await descPaginator.nextPage();
//do stuff
}
https://stackoverflow.com/questions/64286939
复制相似问题