Объединить запросы в серии - Angular 7 - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь объединить несколько запросов в ряд, что-то вроде forkJoin, но запросы НЕ запрашиваются параллельно.Вот что у меня есть:

let nodeDetails = this.http.get('node/1/')
let nodeParents = this.http.get('nodeParents/1/')
let nodeTree = this.http.get('nodeTree/1/')
let nodeUsers = this.http.get('nodeUsers/1/')
let nodeDocuments = this.http.get('nodeDocuments/1/')
var requests = [nodeDetails, nodeParents, nodeTree, nodeUsers, nodeDocuments]
forkJoin(requests)
  .subscribe(responses => {
    // List of all responses from all of the requests
    console.log(responses)
  })

Я где-то читал, что concat можно использовать в комбинации с toArray, но это, по-видимому, было удалено в последних обновлениях rxjs.Есть ли способ сделать это в настоящее время?

РЕДАКТИРОВАТЬ - Конечная цель похожа на этот ответ .Код в этом ответе больше не работает в Angular 7 и Rxjs 6.2.2.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вот что получилось:

import { toArray } from 'rxjs/operators';
import { concat } from 'rxjs';

let nodeDetails = this.http.get('node/1/')
let nodeParents = this.http.get('nodeParents/1/')
let nodeTree = this.http.get('nodeTree/1/')
let nodeUsers = this.http.get('nodeUsers/1/')
let nodeDocuments = this.http.get('nodeDocuments/1/')
const requests = concat(nodeDetails, nodeParents, nodeTree, nodeUsers, nodeDocuments)

requests
    .pipe(toArray())
    .subscribe(responses => {
        // Array of responses
    })

Оператор toArray() ожидает всех ответов - в порядке, указанном в concat.

0 голосов
/ 13 декабря 2018

Вы можете использовать concat из Rxj6 .Tyry что-то в этом роде:

//  RxJS v6+
import {concat} from 'rxjs';

let nodeDetails = this.http.get('node/1/')
let nodeParents = this.http.get('nodeParents/1/')
let nodeTree = this.http.get('nodeTree/1/')
let nodeUsers = this.http.get('nodeUsers/1/')
let nodeDocuments = this.http.get('nodeDocuments/1/')

const requests = concat(nodeDetails, nodeParents, nodeTree, nodeUsers, nodeDocuments)

Использование forkjoin для параллельного оператора или оператора Rxjs, например concatMap для непараллельного

...