我需要从API端点中检索最多N个元素,但该端点是分层的,没有选项来配置每页获取多少项.这些元素是json对象.
显而易见的解决方案是:
let page = 1
let totalAmount = 0
let elements = []
while (totalAmount < N) {
const pageElements = apiService.getElements(page)
elements.push(...pageElements)
totalAmount += pageElements.length
page += 1
//code for the case when N is bigger than all the elements in the API
}
elements = elements.slice(0, N)
但当N很大时,这可能太低效了,因为slice会在内存中复制array.
所以,我正在做的是,在while循环中,判断我是否处于最后一次迭代中,如果是,我只切片该页面:
if (totalAmount + pageElements.length > N) {
pageElements= pageElements.slice(0, N - totalAmount)
}
有没有方法可以让这变得更有效?第二种解决方案可能足够有效,但我确实需要让它尽可能好.