Сделайте операции последовательными с RxJS - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть служба, которая отвечает за отправку и получение данных для резервного копирования.Операции могут быть: - извлекать данные (всю модель или их часть) - удалять один элемент - обновлять существующий элемент - создавать новый элемент

Операции могут запускаться с помощью ввода пользователя.Я хочу убедиться, что одна операция выполняется только после завершения всех предыдущих.Как это можно сделать с помощью RxJS?

Аналогичный вопрос здесь , но в этом случае новые операции не запускаются после завершения старых.

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Этого можно достичь с помощью concat, который сгенерирует новый Observable.Каждый раз, когда запрашивается новая операция, сервис должен будет создать новую наблюдаемую.

https://www.learnrxjs.io/operators/combination/concat.html

const { interval, concat} = rxjs;
const { take } = rxjs.operators;
 
let x = concat(
  interval(500).pipe(take(1)),
  interval(500).pipe(take(2)),
)
 
concat (
  x,
  interval(500).pipe(take(3)),
).subscribe(console.log)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
<button>Click</button>
0 голосов
/ 25 сентября 2019

Возможно, вам нужна функция forkJoin, которая ожидает завершения всех переданных наблюдаемых перед выпуском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...