Rx Наблюдаемые ошибки обработки труб - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть подпрограмма submit с before "обратным вызовом" и after "обратным вызовом".

И before, submit и after могут выполнять асинхронные запросы к внутренним службам.

Три подпрограммы должны вызываться последовательно и заключаться в оператор zip для выполнения дополнительного кода только после завершения трех подпрограмм.

Будучи новичком в программировании Rx, я не уверен в , как "соединить" три подпрограммы вместе .

ОБНОВЛЕНИЕ 1

Под рутиной я подразумеваю функцию.

submit() { // same for 'before' and 'after'
  this.backend.methodMakingHttpRequestAndReturningObservable();
}

Как указано в заголовке вопроса, проблема в контексте Rx Observable, используемого внутри Angular в данном конкретном случае.

1 Ответ

0 голосов
/ 30 апреля 2018

concatMap не подписывается на следующее наблюдаемое, пока не завершится предыдущий. ( Проверьте этот сайт ).

import { concatMap } from 'rxjs/concatMap';

$before = httpRequest();
$submit = httpRequest();
$after = httpRequest();

const $request = $before.pipe(
  concatMap(beforeResponse => {
    // use beforeResponse whatever you want
    return $submit;
  },
  concatMap(submitResponse => {
    // use submitResponse whatever you want
    return $after;
  })
);

$request.subscribe(
  res => console.log(res),
  err => console.log(`something wrong happen: ${err}`) // if any error occur, this is the place to handle it.
);
...