Когда я использую rxjs-fetch для добавления информации в GroupObservable, она исчерпывается.(дальнейшее отображение работает на пустой Observable)
Пусть код говорит:
import Rx from "rxjs";
import rxFetch from 'rxjs-fetch'
import chai from "chai";
const expect = chai.expect;
describe('General', () => {
it('combine group and rxfetch', (done)=>{
Rx.Observable.from([1,2,3,4,5,6])
.groupBy(v=>v%2)
.do(modGroup => console.log(modGroup.key, modGroup.groupSubject.isStopped))
.flatMap(modGroup => modGroup.reduce((a,b) => a+b, 0))
.do(console.log)
.subscribe(()=>{},done,done);
})
});
Это выводит как ожидалось:
1 false
0 false
9
12
Теперь добавим несколько rxjs-fetch,это не должно причинить никакого вреда:
import Rx from "rxjs";
import rxFetch from 'rxjs-fetch'
import chai from "chai";
const expect = chai.expect;
describe('General', () => {
it('combine group and rxfetch', (done)=>{
Rx.Observable.from([1,2,3,4,5,6])
.groupBy(v=>v%2)
.do(modGroup => console.log(modGroup.key, modGroup.groupSubject.isStopped))
.flatMap(modGroup =>
rxFetch("https://my-json-server.typicode.com/typicode/demo/posts")
.json().map(r => modGroup)
)
.do(modGroup => console.log(modGroup.key, modGroup.groupSubject.isStopped))
.flatMap(modGroup => modGroup.reduce((a,b) => a+b, 0))
.do(console.log)
.subscribe(()=>{},done,done);
})
});
Но удивить вывод:
1 false
0 false
1 true
0 true
0
0
Два true
указывают, что GroupObservable остановлен и не будет выдавать никаких дальнейших значений,Все, что я сделал, это извлек что-то через rxjs-fetch.
В моем примере из реального мира ключ группы становится частью URL-адреса запроса, и отображение немного более изящное, я сократил его до минимально возможного сбоя.пример.
Любая идея, как я могу добиться rxjs-fetch без потери groupObservable?