Я хочу сделать 5k + запросов в несколько пакетов с использованием ReactiveX - PullRequest
0 голосов
/ 23 апреля 2020

Я загружаю данные с сервера, используя 2 конечные точки отдыха. 1-й дает мне только список идентификаторов, 2-й дает мне детали одного объекта по идентификатору. Поэтому я должен сначала получить все идентификаторы, а затем вызвать 2-ю конечную точку для каждого идентификатора. Слишком много звонков одновременно, поэтому я бы хотел последовательно вызывать 2-ю конечную точку в пакетах по X (число не имеет значения, может быть 100, может быть 1000).

Мой текущий код в TypeScript:

    getAll(): Observable<Result[]> {
    return this.http.get<DtoWithIdsOnly>(`https://${environment.host}/${API}`)
        .pipe(
            // request individual object details
            map(dtoWithIds => dtoWithIds.ids.map(partialResult => this.getOne(partialResult.id))),
            // combine results async
            flatMap(individualRequests => observableFamilies.length > 0 ? combineLatest(observableFamilies) : of([])));
}

Таким образом, «проблема» является окончательной flatMap делает ВСЕ запросы одновременно. Как я могу задушить их?

...