Во-первых: Это первый проект, в котором я использую RxJs. Я думал, что я буду учиться лучше всего, используя его.RxJs Наблюдаемая разбивка на страницы
Я нашел этот ответ: Turning paginated requests into an Observable stream with RxJs Но это говорит в комментариях:
Вы превышая максимальный стек вызовов до сих пор. Пришло около 430 страниц. Я думаю, recurion может быть и не лучшим решением.
Я хочу запросить API данных Youtube, результаты возвращаются на страницы, и мне нужно их прокручивать. Я предположил, что такой рабочий процесс может работать: 1) Инициировать вызов 2) Проверьте, имеет ли ответ «nextPageToken» 3) Если он есть, выполните другой запрос API Youtube 4) Если нет, завершите
So to do this I could Imagine the following Observables/streams:
FirstRequestStream -A-X--------------->
ResponseStream -A-A-A-A--X-------->
RequestStream -I-A-I-A----------->
A = Action
I = Info from upper stream
X = Termination
(Не уверен, что если эта схема верна, как я сделал это)
Так ResponseStream зависит от FirstRequestStream и RequestStream (с помощью функции слияния). RequestStream зависит от ResponseStream (это называется циркулирующим наблюдаемым?)
-Это правильный подход?
-Возможно, что «циркулирующие наблюдаемые» - это даже возможно (у меня были проблемы с созданием одного).
-Другой путь Я должен попробовать в первую очередь?
-Возможно создать взаимозависимые наблюдаемые потоки?
Благодарим за помощь.
Но, как я понимаю, это будет делать весь постраничный вызов семь, если никто не заинтересован в результатах - например, пользователь не нажал «следующий страница ", сделана" inifinite scrolling ". Как можно изменить эту логику, чтобы позволить что-то подобное? –
@torazaburo no this observable отложен («ленивый»), поэтому он начнет делать запросы только после того, как кто-то подписался на него и остановится, когда вы отпишетесь. Поэтому, если вы «берете» всего несколько элементов из потока, будут получены только нужные страницы (не все), см. Примеры кода в ответе. –