3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個贊
你可以使用遞歸:
const dispatcher = {
page: firstPage,
droplets: [],
execute: function () {
const self = this;
return new Promise(function (resolve, reject) {
getDropletsPerPage(command, this.page).then(function (response) {
self.page = response['nextPage'];
self.droplets = self.droplets.concat(response['droplets']);
if (nextPage === LAST_PAGE) {
resolve(true);/* done */
} else {
self.execute().then(function () {
resolve(true);
});
}
});
});
}
}
dispatcher.execute().then(function() {
/* reached last page */
});

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊
一個簡單的方法來做到這一點(diǎn):
async getDropletsList(command, dropletsList, currentPage) {
if(!currentPage) return dropletsList // here you've to check if there is another valid page
const { nextPage, droplets } = await getDropletsPerPage(command, currentPage)
dropletsList = dropletsList.concat(droplets)
return getDropletsList(command, dropletsList, nextPage) // recursive call
}
希望對你有幫助:D

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
如果您的目標(biāo)是從所有頁面收集液滴信息,您可以將數(shù)據(jù)累積在一個數(shù)組中,該數(shù)組作為參數(shù)傳遞給遞歸函數(shù)的每個后續(xù)調(diào)用(直到到達(dá)最后一頁):
const getDroplets = (page, droplets = []) => {
if (/* end of the pagination is reached */) {
return Promise.resolve(droplets);
}
return getDropletsPerPage(command, page).then((response) => {
return getDroplets(
response.nextPage,
droplets.concat(...response.droplets)
);
})
};
getDroplets(firstPage).then(droplets => {
console.log(droplets);
});
添加回答
舉報