Задать вопрос
nasnetstep
@nasnetstep

Rxjs как сделать последовательно два http запроса?

Есть допустим стрим для получения данных и удаления данных

Нужно, последовательно удалить данные, сначала первые данные, а только потом вторые. Но сначала нужно убедиться есть ли они.

Вот что я написал, но мне кажется это неправильно

let params1 = 1;
let params2 = 2;

service.getData(): Observable
service.deleteData() : Observable

service.getData(params1).subscribe(res => {
  if(res) {
     service.deleteData(params1).subscribe(res => {
       service.getData(params2).subscribe(res => {
           if(res) {
             service.deleteData(params2).subscribe();
           }
     });
  } else {
     service.getData(params2).subscribe(res => {
        if(res) {
           service.deleteData(params2).subscribe();
        }
  }
});
  • Вопрос задан
  • 4962 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
nasnetstep
@nasnetstep Автор вопроса
Вообщем я нашел ответ сам, может кому-то пригодится
flatMap и forkJoin

// последовательно

let someStream$ = service.getData().flatMap(res => {
  return service.deleteData(res)
})

someStream$.subscribe(res => {
   // res - результат последнего 
})

// параллельно
let getData$ = service.getData();
let deleteData$ = service.deleteData();

Observable.forkJoin([getData$, deleteData$]).subscribe(results => {
      // results[0] дата из getData$
      // results[1] дата из deleteData$
      this.a = results[1];
      this.b = results[0];
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы