我有一个>>> 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
“回调”。
after
,before
和submit
都可以对后端服务执行异步请求。
这三个例程应该按顺序调用,并且只有在三个例程完成后才能执行进一步的代码。
作为一名新手Rx程序员,我不确定如何“管理”这三个例程。
更新1
按惯例我的意思是一个功能。
after
正如问题标题中所述,问题出在此特定情况下在Angular中使用的Rx Observable的上下文中。
答案 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.
);