RxJ создают разрушаемую последовательность запросов - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно сделать последовательность вызовов (длина этой последовательности является переменной) в API.На каждой итерации я хочу продолжить только в случае успеха и если нет ошибки возврата для наблюдателя.Кроме того, эти запросы не нуждаются в данных из предыдущего запроса.

Как мне реализовать эту очередь запросов?

Пока я вижу его как метод, который вызывается рекурсивно до конца массива запросов.

sendQueue(list: any[]) {
    const {request, transferData} = list[0];
    this.send(request, transferData).subscribe(msg => {
        if (list.length > 0) {
            this.sendQueue(list.slice(1));
        } else {
            return of(true);
        }
    }, err => {
        this.ns.showError(err);
        return of(false);
    });
}

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете использовать concat.Он будет подписываться на каждый источник Observable один за другим, и если какой-либо из них выдаст ошибку, он остановится.

sendQueue(list: any[]) {
  const sources = list.map(({ request, transferData }) => this.send(request, transferData));
  return concat(...sources);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...