Считайте параллельные запросы HttpClient с помощью Rx JS бесконечно - PullRequest
0 голосов
/ 23 марта 2020

Я застрял при попытке рассчитать одновременные запросы HttpClient хорошим реактивным способом. В этом примере я использую интервалы в качестве триггеров запросов, но в действительности это были бы некоторые другие асинхронные события. Я НЕ ХОЧУ нажимать и обновлять глобальные данные counter, наблюдаемые до и после каждого вызова httpClient. Я почти уверен, что должен быть какой-то лучший способ.

let a11$ = interval(1000); 
let a12$ = interval(1500);
let a13$ = interval(3000);

let c1$ = combineLatest(a11$, a12$, a13$).pipe(
    map(([a, b ,c]) => {
        return this.httpClient.get(`http://example.com/${a}${b}${c}`);
    })
)

let a21$ = interval(4000); 
let a22$ = interval(4500);
let a23$ = interval(5000);


let c2$ = combineLatest(a21$, a22$, a23$).pipe(
    map(([a, b ,c]) => {
        return this.httpClient.get(`http://example.com/${a}${b}${c}`);
    })
)


let count$ = null; // I want to calculate how many concurrent HTTP requests produced by c1$ and c2$ are being executed at the moment. Infinitely.

1 Ответ

0 голосов
/ 23 марта 2020

есть оператор count() с rx js, и вы можете разделить их на два потока

const combined=combineLatest(a21$, a22$, a23$)

const count=combined.pipe(count())

const c2$=combined.pipe(
    map(([a, b ,c]) => {
        return this.httpClient.get(`http://example.com/${a}${b}${c}`);
    })
)
// get the counts
count.subscribe(console.log)
...