Rx Observable管道处理错误

时间:2018-04-30 13:32:54

标签: angular rxjs observable reactive-programming

我有一个>>> a array([[ 0, 1, 2, 1077936128, 1082130432], [ 5, 6, 7, 1090519040, 1091567616], [ 10, 11, 12, 1095761920, 1096810496], [ 15, 16, 17, 1099956224, 1100480512], [ 20, 21, 22, 1102577664, 1103101952]]) >>> b array([[( 0, 1, 2, 3., 4.)], [( 5, 6, 7, 8., 9.)], [(10, 11, 12, 13., 14.)], [(15, 16, 17, 18., 19.)], [(20, 21, 22, 23., 24.)]], dtype=[('width', '<i4'), ('height', '<i4'), ('depth', '<i4'), ('score', '<f4'), ('auc', '<f4')]) 例程submit“回调”和before“回调”。

afterbeforesubmit都可以对后端服务执行异步请求。

这三个例程应该按顺序调用,并且只有在三个例程完成后才能执行进一步的代码。

作为一名新手Rx程序员,我不确定如何“管理”这三个例程

更新1

按惯例我的意思是一个功能。

after

正如问题标题中所述,问题出在此特定情况下在Angular中使用的Rx Observable的上下文中。

1 个答案:

答案 0 :(得分:1)

concatMap 不会订阅到下一个observable,直到上一个完成。 (Check this site)。

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.
);