-1
我需要爲列表[「A」,「B」,「C」]中的每個項目調用Web服務。該服務將返回頁面中的數據(默認頁面大小爲100)。服務的第一次調用(使用page = 1作爲參數)將有記錄的總數設置爲響應中的標題,並基於我需要多次調用該服務。我需要等待所有調用的響應,才能繼續進一步的邏輯。任何指針來實現上述使用Rxjs將有很大的幫助Rxjs調用返回頁面中的數據的服務
我需要爲列表[「A」,「B」,「C」]中的每個項目調用Web服務。該服務將返回頁面中的數據(默認頁面大小爲100)。服務的第一次調用(使用page = 1作爲參數)將有記錄的總數設置爲響應中的標題,並基於我需要多次調用該服務。我需要等待所有調用的響應,才能繼續進一步的邏輯。任何指針來實現上述使用Rxjs將有很大的幫助Rxjs調用返回頁面中的數據的服務
使用expand
操作符,你可以遞歸調用的API(getData(x)
)來檢索分頁的數據,直到你填寫你的需求(用.take(7)
模擬)
function getData(page) {
return Rx.Observable.of({
page: page,
hasMoreData: page !== 4,
data: [
page * 10 + 1,
page * 10 + 2,
page * 10 + 3,
page * 10 + 4,
page * 10 + 5
]
})
.delay(1000)
.do(() => console.log('retrieved data for page: ' + page));
}
getData(1)
.expand(data => {
if (data.hasMoreData) {
return getData(data.page + 1);
}
return Rx.Observable.empty();
})
.mergeMap(dataObj => dataObj.data)
.take(7)
.subscribe(val => console.log('data: ' + val));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.2/Rx.js"></script>
https://stackoverflow.com/questions/35254323/rxjs-observable-pagination是,這是你在找什麼? –
嗨。我的工作滿足了我的要求,但響應格式不正確。來自每個服務調用的響應都是一個對象數組。所以我認爲在最後一個流應該有多個數組對象(如[{},{}] [] {},{} [{},{}]),但我得到了一系列扁平對象。 (喜歡 {}{}{}) –