के साथ एक अवलोकन धारा में पृष्ठबद्ध अनुरोधों को चालू करना मेरे पास एक सेवा है जो पृष्ठों में डेटा लौटाती है। एक पृष्ठ की प्रतिक्रिया में अगले पृष्ठ के लिए पूछताछ के बारे में विवरण शामिल हैं।RxJs
मेरा दृष्टिकोण प्रतिक्रिया डेटा वापस करना है और फिर अधिक पृष्ठों को उपलब्ध होने पर तत्काल अनुक्रमित अनुक्रम में एक स्थगित कॉल को सम्मिलित करना है।
function getPageFromServer(index) {
// return dummy data for testcase
return {nextpage:index+1, data:[1,2,3]};
}
function getPagedItems(index) {
return Observable.return(getPageFromServer(index))
.flatMap(function(response) {
if (response.nextpage !== null) {
return Observable.fromArray(response.data)
.concat(Observable.defer(function() {return getPagedItems(response.nextpage);}));
}
return Observable.fromArray(response.data);
});
}
getPagedItems(0).subscribe(
function(item) {
console.log(new Date(), item);
},
function(error) {
console.log(error);
}
)
यह गलत दृष्टिकोण होना चाहिए, क्योंकि 2 सेकंड के भीतर आपको मिलेगा:
throw e;
^
RangeError: Maximum call stack size exceeded
at CompositeDisposablePrototype.dispose (/Users/me/node_modules/rx/dist/rx.all.js:654:51)
सही दृष्टिकोण पर अंक लगाना करने के लिए क्या है?
लायक जब मैं यह परीक्षण (सबसे बाहर निकलने के पथ पर 10 पृष्ठों के बिना) है, यह 1380 आइटम रिटर्न और उसके बाद बंद हो जाता है। यह कैसे रुक सकता है? – RichB
मैंने इस कोड के साथ एक JSFiddle बनाया है। http://jsfiddle.net/1wpcmuke/ यह अभी भी अधिकतम कॉल स्टैक आकार से अधिक हो गया है। – RichB
आप अभी भी अधिकतम कॉल स्टैक से अधिक हो रहे हैं। लगभग 430 पेज लौटे। मुझे लगता है कि रिकर्सन यहां सबसे अच्छा समाधान नहीं हो सकता है। –